内部错误,执行自定义功能

问题描述 投票:-1回答: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;
}
google-apps-script google-sheets google-sheets-custom-function
1个回答
1
投票

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

由于增加一个失败时将控制for循环之一的迭代次数的值,这将使自定义函数的执行时间增加,因此很有可能超过了自定义函数的30秒限制。

© www.soinside.com 2019 - 2024. All rights reserved.