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;
}
问题函数使用两个for循环,该循环对SpreadsheetApp类进行了多次调用。
由于增加一个失败时将控制for循环之一的迭代次数的值,这将使自定义函数的执行时间增加,因此很有可能超过了自定义函数的30秒限制。