For loop GSheet脚本:如何优化行和表迭代器
长话短说,我有一个Google脚本,可以自动清除GSheet中的内容。它被设置在一个触发器上,并且可以工作……代码执行它应该执行的操作。问题是它运行缓慢。运行迭代器需要2到3分钟。为了帮助您确定任务的范围:8张工作表中的每一张都有150行 代码的目标是根据行第一列中单元格的值清除每张图纸上的多行 因此,我想知道是否有人有任何见解或建议,以改善运行时间。我了解使用for循环逐个检查行的方法,这是一项耗时的任务。我想不出另一种方法来处理数组之类的东西 谢谢大家 代码如下:For loop GSheet脚本:如何优化行和表迭代器,for-loop,google-apps-script,google-sheets,optimization,iterator,For Loop,Google Apps Script,Google Sheets,Optimization,Iterator,长话短说,我有一个Google脚本,可以自动清除GSheet中的内容。它被设置在一个触发器上,并且可以工作……代码执行它应该执行的操作。问题是它运行缓慢。运行迭代器需要2到3分钟。为了帮助您确定任务的范围:8张工作表中的每一张都有150行 代码的目标是根据行第一列中单元格的值清除每张图纸上的多行 因此,我想知道是否有人有任何见解或建议,以改善运行时间。我了解使用for循环逐个检查行的方法,这是一项耗时的任务。我想不出另一种方法来处理数组之类的东西 谢谢大家 代码如下: function
function Reset_Button() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = 1; i < sheets.length ; i++ ) {
var sheet = sheets[i];
sheet.getRange("C2").setValue(new Date());
var rangeData = sheet.getDataRange();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(1,1, lastRow, 1);
for ( j = 1 ; j < lastRow ; j++){
var value = sheet.getRange(j,1).getValue()
if(value === 0){
sheet.getRange(j,2,1,5).clearContent()
}}}}
功能复位按钮(){
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
对于(变量i=1;i
通常,您希望尽可能少地写入电子表格。当前,您的代码将遍历每一行,并在必要时对其进行编辑。相反,将要处理的整个数据范围放入一个变量中(比如说dRange
,并使用.getValues()
将所有值的2d数组放入第二个变量中(比如dValues
),然后简单地迭代dValues
,设置一个空白的“”
在每个要清除的变量中。一旦完成所有值的清除,只需执行一个拖动.setValues(dValues)
(这就是为什么我说要将范围保留在一个单独的变量中)。因此,作为一个示例,下面将清除B
到F
列,如果列a
有一个0
function test(){
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = 1; i <sheets.length; i++) {
sheets[i].getRange("C2").setValue(new Date());
var dRange = sheets[i].getDataRange();
var dValues = dRange.getValues();
for (var j = 1; j < dRange.getLastRow(); j++){
if (dValues[j][0] == 0) {
for (var c = 1; c < 6; c++) {
dValues[j][c] = ""
}
}
}
dRange.setValues(dValues);
}
}
功能测试(){
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
对于(var i=1;i