我有一个.tsv文件从一个工具,我有导入它的谷歌表(几乎)实时报告。这是我的代码导入。
function importBigTSV(url) {return Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText(),'\t');}
几天前还能正常工作,但错误信息一直在说 "超过了最大执行时间(第0行)"。
有谁能帮忙吗?非常感谢
正如 @TheMaster 所说,自定义函数有一个硬性限制,即只能使用一个函数。30秒您的函数很可能已经达到了这个时间。常规应用程序脚本的执行有更宽松的时间限制(6或30分钟,取决于你的账户),所以你应该相应地修改你的函数。
为了改造你的函数,你必须考虑到这些基本的区别。
setValues
或 appendRow
)来实现这一点。根据我的理解,你总是在获取相同的URL,你可以通过在你的函数中硬编码来指定那个URL。
例如下面的函数,将把解析后的输出写到当前选择的范围(在触发函数的那一刻)。你也可以提供一个默认的范围来写入输出,使用 getRange:
function importBigTSV() {
var url = "{url-to-fetch}";
var range = SpreadsheetApp.getActiveRange();
try {
var output = Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText(),'\t');
var outputRange = range.offset(0, 0, output.length, output[0].length);
outputRange.setValues(output);
} catch(err) {
console.log(err);
}
}
如果URL可以改变,我建议你有一个URL列表来获取,并且,在触发功能之前,选择所需的URL,并使用。getActiveRange
为了得到这个URL。
在任何情况下,一旦你写了你的函数,你必须以某种方式附加这个函数,这样它就可以从工作表本身触发。你可以创建一个 自定义菜单或插入图像或图画,以及 附带剧本. 参考链接提供了清晰简洁的实现步骤。