Apps Script - 内部错误执行自定义功能

时间:2018-04-16 16:02:47

标签: google-apps-script google-sheets custom-function

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;
}

1 个答案:

答案 0 :(得分:1)

问题上的函数使用两个for循环来调用SpreadsheetApp类。

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