Google apps script Google脚本-15秒后出现内部错误
所以我写了一个脚本,我们给出了在同一行中具有特定标记的所有数据的总和Google apps script Google脚本-15秒后出现内部错误,google-apps-script,google-sheets,Google Apps Script,Google Sheets,所以我写了一个脚本,我们给出了在同一行中具有特定标记的所有数据的总和 Col 1 | Col 2 -------+--------- grp1 | 2 grp1 | 1 grp2 | 1 -------+--------- 如果我通过这个函数grp1,结果将是3 当我在1000行以上使用这个脚本时,我会在短时间(比如15秒)后得到一个错误“执行自定义函数时出现内部错误”。我想这可能是超时,但它发生在30秒之前。有什么想法吗 function collectgrpd
Col 1 | Col 2
-------+---------
grp1 | 2
grp1 | 1
grp2 | 1
-------+---------
如果我通过这个函数grp1,结果将是3
当我在1000行以上使用这个脚本时,我会在短时间(比如15秒)后得到一个错误“执行自定义函数时出现内部错误”。我想这可能是超时,但它发生在30秒之前。有什么想法吗
function collectgrpdata(group, startrow) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var lastrow = sheet.getLastRow();
var currentcell = sheet.getActiveCell();
var col = currentcell.getColumn();
var total = 0;
for(var x = startrow; x <= lastrow; x++) {
var v = sheet.getRange(x, col).getValue();
if(v != "" ) {
if (sheet.getRange(x, 2).getValue() == group) {
total += v;
}
}
}
return total
}
函数collectgrpdata(组,startrow){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var lastrow=sheet.getLastRow();
var currentcell=sheet.getActiveCell();
var col=currentcell.getColumn();
var合计=0;
对于(var x=startrow;x您的问题最有可能是由于您对getRange和getValue进行了大量调用。
你可能是在打你的电话
不要这样做,而是打一个大电话获取所有数据,然后处理这些数据:
function collectgrpdata2(group, startrow) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currentcell = sheet.getActiveCell();
var col = currentcell.getColumn();
var range = sheet
.getRange(startrow,
col,
sheet.getLastRow() - startrow + 1,
sheet.getLastColumn() - col + 1)
var data = range.getValues();
return data
.filter(function(row) {return row[0] === group;})
.map(function(row) {return row[1];})
.concat(0)
.reduce(function(x,y) {return x+y;});
}
您的问题很可能是由于您对getRange和getValue进行了大量调用。
你可能是在打你的电话
不要这样做,而是打一个大电话获取所有数据,然后处理这些数据:
function collectgrpdata2(group, startrow) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currentcell = sheet.getActiveCell();
var col = currentcell.getColumn();
var range = sheet
.getRange(startrow,
col,
sheet.getLastRow() - startrow + 1,
sheet.getLastColumn() - col + 1)
var data = range.getValues();
return data
.filter(function(row) {return row[0] === group;})
.map(function(row) {return row[1];})
.concat(0)
.reduce(function(x,y) {return x+y;});
}
谢谢罗宾!会给它一次机会的。谢谢罗宾!会给它一次机会的。