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;
}
答案 0 :(得分:1)
问题上的函数使用两个for循环来调用SpreadsheetApp类。
当增加一个控制一个for循环的迭代次数的值时失败,这使得自定义函数的执行时间增加,很可能它超过了自定义函数的30秒限制