在循环中使用 .getValue().这会导致许多调用.有没有更简单的方法可以做到这一点
Using .getValue() in a loop. This results in many calls. Is there a simpler way to do this?
对不起,如果这有点新手。
我正在尝试做的是获取一列并删除其某些单元格中的值(如果它们不包含公式)。
function clean() {
var ss = SpreadsheetApp.openById("KEY_REMOVED_FOR_OBVIOUS_REASONS");
var sheet = ss.getSheetByName("TEST");
var limit = sheet.getMaxRows();
for(var i = 6; i < limit; ++i){ // Declares variable "i", which represents the row we are currently checking. Basically says "if our row isn't the last one, execute this block then add to i".
var range = sheet.getRange(i,2);
if (range.getValue() != "") { // Leverages the fact that .getValue() cannot return functions. If our range is blank, execute this block.
range.clear();
}
}
}
我建立了一个循环,逐一检查每一行。我想知道的是,有没有比每次循环时都必须调用服务器更有效的方法?
getValues() 当然存在,但我不确定如何仅与返回的所需单元格进行交互。
我做了一些测试。 如果有公式,.getValues()
将返回计算值。
以下代码对我有用。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getLastRow();
var range = sheet.getRange(1,1, rows);
var values = range.getFormulas();
range.clear();
range.setFormulas(values);
}
简答
关于调用过多问题,请使用getLastRow()
而不是getMaxRows()
,并使用返回值(行数)在一次调用中获取所需的范围。
解释
-
getLastRow()
返回包含内容的最后一行的位置,而getMaxRows()
返回工作表的最大高度,而不考虑内容。 -
getRange(row, column, numRows)
只需一次调用即可返回完整范围。
相关文章:
- 有没有更好的动手、具体的方法来学习Javascript
- 有没有更简单的方法在 Wordpress 中为多个页面模板排队脚本
- 有没有更简单的方法在JavaScript中为Object.defineProperty编写
- 有没有更简单的方法来编写此代码
- 有没有更简单的方法来检查某个父元素的 N 个子元素是什么
- 有没有更简单的方法可以在 jquery 中验证我的表单而不是我所拥有的?
- 有没有更简单的方法可以在一个 UL 中获取 LI 列表编号
- 在循环中使用 .getValue().这会导致许多调用.有没有更简单的方法可以做到这一点
- 有没有更简单的方法可以为不同的选择器链接不同的 jQuery 操作,然后嵌套 $.when
- 有没有一种更简单的方法可以输出完整的'脚本'标记为文本
- 有没有一种更简单的方法可以用javascript运行sqlite
- 有没有一种更简单的方法可以在JavaScript中实现概率函数
- 有没有一种更简单的方法可以简化document.getElementById
- 关于JavaScript,有没有一种更简单的编码方法
- 有没有办法使构造函数赋值更简洁(和简单)?
- 对于数组有没有更简单的解决方案
- 有没有更简单的方法在JavaScript中对响应对象进行排序?
- 有没有一种更简单的方法可以使多个输入等于一个
- 有没有更简单的方法来检查属性的存在
- 有没有更简单或更短的方法来写这个重复代码