【发布时间】:2021-06-19 11:53:59
【问题描述】:
我有一个代码:
function check(){
var sh = SpreadsheetApp.getActive();
var sheet = sh.getSheetByName("1")
var getNames = sheet.getRange("A:A").getValues().filter(String).toString().split(",");
for (var j = 0; j < getNames.length; j++) {
var sheetnow = sh.getSheetByName(getNames[j]);
var last = sh.getSheetByName(getNames[j]).getLastRow();
for (var i = 1 ; i <= last ; i++ ) {
var rangeactive = sheetnow.getRange(i ,7).getValue();
var setval = sheetnow.getRange(i ,8);
if (rangeactive == 1 && setval.getValue() == "") {
setval.setValue("OK");
}
}
}
}
它仍然可以正常工作,但 For 会非常慢,因为所有工作表都有超过 200000 行并且运行时间超过 6 分钟。还有其他更有效的方法吗?谢谢
【问题讨论】:
-
使用 getValues() 和 setValues() 比使用多个 getValue() 或 setValue() 调用更快。
标签: google-apps-script google-sheets