Ngu*_*ong 3 google-sheets urlfetch google-apps-script custom-function

我有一个来自工具的 .tsv 文件,我必须将其导入 Google Sheet(几乎)实时报告。这是我的导入代码:
function importBigTSV(url) {return Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText(),'\t');}
Run Code Online (Sandbox Code Playgroud)
直到几天前,当错误消息一直说“超出最大执行时间(第 0 行)”时,它仍然有效。
有人可以帮忙吗?非常感谢!
正如@TheMaster 所说,自定义函数的硬限制为30 秒,您的函数最有可能达到该限制。常规 Apps 脚本执行的时间限制要宽得多(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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果 URL 可以更改,我建议您有一个要获取的 URL 列表,并且在触发该功能之前,选择所需的 URL,并使用getActiveRange以获取此 URL。
在任何情况下,一旦你编写了你的函数,你必须以某种方式附加这个函数,以便它可以从工作表本身触发。您可以创建自定义菜单,或者插入图像或绘图,然后将脚本附加到它。引用的链接提供了实现此目的的清晰简洁的步骤。