google-apps-script - 超过最大执行时间(第 0 行)

标签 google-apps-script google-sheets urlfetch custom-function

The Error Message

我有一个来自工具的 .tsv 文件,我必须将其导入 Google Sheet(几乎)实时报告。这是我的导入代码:

function importBigTSV(url) {return Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText(),'\t');}

直到几天前,当错误消息一直说“超出最大执行时间(第 0 行)”时,它仍然有效。

有人可以帮忙吗?非常感谢!

最佳答案

问题:

正如@TheMaster 所说,自定义函数的硬限制为 30 seconds ,您的功能最有可能达到。常规 Apps 脚本执行的时间限制要宽得多(6 或 30 分钟,取决于您的帐户),因此您应该相应地修改您的函数。

功能之间的差异:

为了转换您的功能,您必须考虑这些基本差异:

  • 您不能将参数传递给由菜单或按钮调用的函数。因此,您必须找到另一种方法来指定要获取的 URL。
  • 常规函数返回的值不会自动写入工作表。您必须使用书写方法(如 setValuesappendRow )来做到这一点。
  • 不会在任何特定单元格中调用非自定义函数,因此您必须指定要将值写入的位置。

  • 因为,据我所知,你总是在获取相同的 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 .引用的链接提供了实现此目的的清晰简洁的步骤。

    引用:
  • Custom Functions > Return values
  • Custom Menus in G Suite
  • 关于google-apps-script - 超过最大执行时间(第 0 行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61970412/

    相关文章:

    google-apps-script - Google Apps Script Web Apps 中的新 "currentURL is not defined"错误

    javascript - Google Sheet html不调用脚本函数

    r - 将信息发送到 Google 电子表格/Google 表单

    google-sheets - 使用 Sheets API 创建包含开发者元数据的 Google Sheets 电子表格

    python - 在 Google App Engine 中使用 urllib2 会抛出 "Deadline exceeded while waiting for HTTP response from URL:..."

    javascript - 使用谷歌脚本的 Binance API 签名

    javascript - 引用错误 : "getElementsByClassName" is not defined

    json - 解析 Woocommerce Webhook (JSON)

    javascript - 在 100 个元素中的每个循环中使用 5 个元素

    google-apps-script - 你能对 Google-Apps-Script 失败做些什么吗?