在for循环中加载多个工作表会导致脚本冻结(Google Apps脚本)

时间:2013-11-22 10:44:02

标签: google-apps-script google-sheets

我多次遇到这个问题,并且想知道我是否做错了什么。这是我的代码:

function createPersonalSheet() {
var persons = new Array("KDS", "BH");
var ss = SpreadsheetApp.openById("0AtZdrPVig0OadFZjZlYxOEI3WVBwS1NfN2cwMlpaNWc");

for(j=0;j=1;j++) {      
  var data = getData(persons[j]);
  var sheet = ss.getSheetByName(persons[j])
  var end = sheet.getMaxRows()-3;
  var range = sheet.getRange(4, 2, end, 14);
  range.clearContent();
  var range = sheet.getRange(4, 2, data.length, data[0].length);
  range.setValues(data);
}

如果我只在人员数组中添加一个值,它就会运行,但是只要我添加一秒,脚本就会停止工作,甚至会崩溃电子表格(我必须刷新)。有任何想法吗?我在for循环结束时尝试了Utilities.sleep(1000)给它一些时间但没有效果。

任何帮助都将深表感谢

1 个答案:

答案 0 :(得分:1)

我假设你正在做的数组中只有一个元素:

for(j=0;j=0;j++) {

可行,因为j表示从0开始,当它等于0时,增加j。

添加第二个元素时

   for(j=0;j=1;j++) {

现在你有一个问题 - j从0开始,当它等于1时,增加j。这没有任何意义。

另外,即使那是你的意图,for语句的布尔部分(第二部分)必须是 j == ,对于等于运算符而不是 j = < / strong>用于赋值运算符。这个错误会导致应用程序脚本崩溃。

塞尔的想法是正确的。使用

for(var j=0;j<persons.length;j++)