因此,当我在自定义函数上运行自定义函数时,出现错误:“执行自定义函数时出现内部错误”。Google表格自定义功能定时输出
Google指定“自定义函数调用必须在30秒内返回,否则单元将显示错误:执行自定义函数的内部错误。
我的自定义函数是这样的:
function ConcatLoop(rangeString, concatString, isPrefix, isOneColumn) {
//var rangeString = "A1:A10,B1:B10,C1:C10";
//var concatString = "1x ";
//var isPrefix = "true";
//var isOneColumn = "true";
var rangeStringArray = rangeString.split(',');
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var rangeValues=[];
//GRABBING THE VALUES FROM EACH RANGE
for(i=0;i<rangeStringArray.length;i++)
{
var range = sheet.getRange(rangeStringArray[i]);
rangeValues.push(range.getValues());
}
if(isOneColumn){var newRangeValues = [[]]};
//REMOVES EMPTY STRINGS AND ARRAYS OR CONCATENATES THE STRINGS
for (i = 0; i < rangeValues.length; i++) {
for (j = 0; j < rangeValues[i].length; j++){
if (rangeValues[i][j] == "")
{
rangeValues[i].splice(j, 1);
j--;
}
else if(isPrefix == "true")
{
rangeValues[i][j] = concatString + rangeValues[i][j];
if(isOneColumn){newRangeValues[0].push(rangeValues[i][j])};
}
else
{
rangeValues[i][j] = rangeValues[i][j] + concatString;
if(isOneColumn){newRangeValues[0].push(rangeValues[i][j])};
}
}
if (rangeValues[i] ==""){
rangeValues.splice(i,1);
i--;
}
}
//LOG WHILE TESTING
//if(isOneColumn){Logger.log(JSON.stringify(newRangeValues))}
//else{Logger.log("range values after concat: " + rangeValues)}
//RETURN WHILE RUNNING
if(isOneColumn){return newRangeValues}
else{return rangeValues};
}
当我有插入函数1000倍的值,它需要相当一段时间才能把所有的值。当我在GOogle脚本中测试它时,它运行良好,因为那里没有时间限制。
如果有什么我可以做些什么来解决这个问题或让这个更高效,有人可以告诉我吗?非常感谢!
你的范围可以通过A1:C10,或者你要走多远?时间消耗在getValues()调用中。 [Google最佳实践](https://developers.google.com/apps-script/best_practices)建议尽可能拨打1个电话 –
这是通过多张表。我也需要特定的列,比如Sheet1!A1:A100和Sheet2!E1:E:100等。在这一点上,我正在拨打150个电话。所以我应该通过整个表单作为1个范围?那会把它压缩成27个电话。有27张。 – KirklandBrown373
如果您有27张表格,您如何每页打一个以上的电话?你能分享一个例子,你如何从电子表格中调用这个函数,并带有一个示例参数 –