我在这里找到了一种减少执行时间的解决方案,但是我无法通过此处讨论的批处理来实现。 [问题]:Google app script timeout ~ 5 minutes?
对不起,我是脚本的新手。下面的脚本遍历所有工作表,并将工作表名称更改为A1中的值。
function onEdit() {
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
// Array holding the names of the sheets to exclude from the execution
var exclude =["Sheet1","Sheet2","Sheet3","Article","Frontpage","Logos","Sheet4","Sheet5","Sheet6","Sheet10"];
for(var i=10;i<allsheets.length;i++) {
var sheet = allsheets[i];
var oldName = sheet.getName();
var newName = sheet.getRange(1,1).getValue();
if (newName.toString().length>0 && newName !== oldName) {
sheet.setName(newName);
// Stop iteration execution if the condition is met.
if(exclude.indexOf(sheet.getName())==-1) continue;
}
} // end of loop
} // end of function
如何使用下面的示例作为参考,对上述脚本实施批处理以减少服务调用次数?
for (var i = 1; i <= 100; i++) {
SpreadsheetApp.getActiveSheet().deleteRow(i);
}
执行以下操作:
SpreadsheetApp.getActiveSheet().deleteRows(i, 100);
答案 0 :(得分:0)
尝试一下:
function onEdit(e) {
var sh=e.range.getSheet();
var name=sh.getName();
var a1=sh.getRange('A1').getValue();
if(name!=a1) {
sh.setName(a1);
}
}
注意:没有事件对象,您将无法运行此功能。因此,除非提供事件对象,否则无法从脚本编辑器运行它。