我有一个来自工具的 .tsv 文件,我必须将其导入 Google Sheet(几乎)实时报告。这是我的导入代码:
function importBigTSV(url) {return Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText(),'\t');}
直到几天前,当错误消息一直说“超出最大执行时间(第 0 行)”时,它仍然有效。
有人可以帮忙吗?非常感谢!
最佳答案
问题:
正如@TheMaster 所说,自定义函数的硬限制为 30 seconds ,您的功能最有可能达到。常规 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);
}
}
如果 URL 可以更改,我建议您有一个要获取的 URL 列表,并在触发该功能之前选择所需的 URL,然后使用
getActiveRange
为了得到这个网址。将功能附加到菜单:
在任何情况下,一旦你编写了你的函数,你必须以某种方式附加这个函数,以便它可以从工作表本身触发。您可以创建一个 custom menu ,或插入图像或绘图,以及 attach the script to it .引用的链接提供了实现此目的的清晰简洁的步骤。
引用:
关于google-apps-script - 超过最大执行时间(第 0 行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61970412/