-1

Apps 脚本有什么限制吗?如果我将变量“lLen”设置为大于 18,我会收到“内部错误”-http: //prntscr.com/j60kxb

实际上我需要这个字符串,var lLen = CIDlist.length;但我得到了上面的错误。在某些情况下CIDlist.length,价值可以是 160+。当我玩了解问题的原因时,我发现如果lLen <= 18. 任何想法为什么会发生?

function myFunction(input) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets(); 
  var sheet = sheets[3]; 
  var lastrow = sheet.getLastRow();
  var CIDlist = [];

  for(var i =16; i<=lastrow; i++){
    var firstval = sheet.getRange("B"+i).getValue();
    var secondval = sheet.getRange("C"+i).getValue();
    if (firstval == input[0][1] && secondval == input[0][0]) {
      var CID = sheet.getRange("A"+i).getValue();
      if (CIDlist.indexOf(CID) == -1) {
        CIDlist.push(CID);
      } 
    }
  }
  console.log(input);
  console.log(CIDlist.length);
  var lLen = 19;
  var TotalRevenue = 0;
  for (var i=0; i< lLen; i++){
    var CIDvalue = CIDlist[i];
    for (var j=16; j<=lastrow; j++){
      var cid = sheet.getRange("A"+j).getValue();
      var revenue = sheet.getRange("D"+j).getValue();
      if (cid == CIDvalue) {
        TotalRevenue = TotalRevenue + revenue;
      }
    }
  }
  return TotalRevenue;
}
4

1 回答 1

1

问题上的函数使用了两个 for 循环,对 SpreadsheetApp 类进行了多次调用。

当增加一个控制 for 循环之一的迭代次数的值时它会失败,这会增加自定义函数的执行时间,它很可能超过了自定义函数的 30 秒限制。

于 2018-04-16T16:16:42.407 回答