阻止 Googe Sheet 刷新 HTML 数据

Stop Googe Sheet from refreshing HTML data

我有一个 sheet,它使用 HTML 从很多网页中提取大量财务数据。问题是它慢了很多。另外,由于 HTMLs 等的数量过多,它开始出错。我寻找以下解决方案:

  1. 有一个应用程序脚本来控制刷新..(不太有效)
  2. 我可以通过任何方式自动复制粘贴旧数据,直到新数据进入并更新旧粘贴值..(也无效,因为我找不到自动化方法)
  3. 尝试找到一种方法来使用 google sheet 自动计算来帮助....(也失败了)

有没有办法限制 sheet 自动刷新这么多次...?

您可以试试这个插件,它可以按需冻结您的电子表格:

https://gsuite.google.com/marketplace/app/spreadsheet_freezer/526561533622

documentation 你可以看到:

Functions that pull data from outside the spreadsheet recalculate at the following times:

  • ImportRange: 30 minutes
  • ImportHtml, ImportFeed, ImportData, ImportXml: 1 hour
  • GoogleFinance: may be delayed up to 20 minutes

如果您想以较低的频率重新计算 importHTML 函数的值,您一定要使用 Apps 脚本来获取数据,然后将信息填充到您的电子表格中。

您可以在 Apps 脚本上使用 UrlFetchApp class 来获取数据并定义更新的计时逻辑。

function myAppScriptFunction() {

    var urls = ["your-website-url1", "...", "your-website-urlN"];
    var response = UrlFetchApp.fetchAll(urls);
    //... Parse the response and store the information you need in a table-like data structure

    // Let's assume the variable parsedResponseData is created
    var ss = SpreadsheetApp.getActiveSheet();
    ss.getRange("your-range").setValues(parsedResponseData);

}

您现在应该将您的函数包装在您的自定义时间逻辑中以管理更新。 您可以使用 Apps 脚本上的时间驱动触发器来实现此目的。

function triggerSetup() {
    ScriptApp.newTrigger('myAppScriptFunction')
          .timeBased()
          .everyHours(6)
          .create();
}

参考文献:

Time-driven triggers

UrlFetchApp

Quota Limits