google-apps-script - 谷歌表格: How to import the following data?

标签 google-apps-script google-sheets google-sheets-formula

数据来源
https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll

我正在尝试将以下数据添加到 Google 表格中,但使用 IMPORTXML 来完成此操作看起来很棘手。知道该怎么做吗?

最佳答案

  • 您想要从 URL 的 HTML 数据中检索表格。
    • 来自我正在尝试将以下数据放入 Google 表格,我是这样想的。

如果我的理解是正确的,这个答案怎么样?

问题和解决方法:

不幸的是,HTML 的文件大小似乎很大。因此,当 =IMPORTXML("https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll","//title") 时使用时,会出现Resource at url content超过最大大小。错误。当我从 URL 检索 HTML 数据时,HTML 数据的大小约为 9 MB。认为错误的原因就是由于此。那么作为解决方法之一,使用 Google Apps 脚本怎么样?在此解决方法中,使用以下流程。

  1. 使用 UrlFetchApp 检索 HTML 数据
  2. 使用 GAS 库 Parser 解析 HTML 数据。
  3. 使用 Sheets API 的 PasteDataRequest 将解析后的数据放入电子表格上的事件工作表。

用法:

准备工作:

  1. 请安装解析器。关于库的安装,可以看here .

    • 该库的项目 key 为M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV
  2. Please enable Sheets API at Advanced Google services .

示例脚本:

请将以下脚本复制并粘贴到电子表格的容器绑定(bind)脚本的脚本编辑器中。完成上述设置后,请运行myFunction()函数。运行脚本时,HTML 表格将被放入电子表格上的事件工作表中。

function myFunction() {
  // Retrieve HTML data from URL.
  var url = "https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll";
  var html = UrlFetchApp.fetch(url).getContentText();
  
  // Parse HTML data.
  var table = "<table" + Parser.data(html).from("<table class=\"t-chart\"").to("</table>").build() + "</table>";
  
  // Put the values to the Spreadsheet.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var resource = {requests: [{pasteData: {html: true, data: table, coordinate: {sheetId: sheet.getSheetId()}}}]};
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}

引用文献:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

更新于 2021 年 4 月 23 日:

适用于 Google Apps 脚本的新 IDE 终于于 2020 年 12 月 7 日发布。Ref这样,在现阶段,为了安装Google Apps Script库,需要使用Google Apps Script项目的脚本ID。

在本例中,当 Parser 的 Google Apps 脚本库已安装,遗憾的是,无法使用此 ID M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV

所以当您使用新的IDE时,请使用以下脚本ID。

1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

此脚本 ID 是 M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV 的 Google Apps 脚本项目的 ID。这样就可以将Parser库安装到新的IDE中了。

关于安装库的方法,可以参见the official document .

引用:

关于google-apps-script - 谷歌表格: How to import the following data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838223/

相关文章:

javascript - 有没有办法将 Google 文档分割成多个 PDF?

javascript - 更改 Google 日历中事件的颜色

mysql - Google Apps 脚本上的 JDBC。异常 : Statement cancelled due to timeout or client request

google-apps-script - Google 电子表格脚本错误 : "Cannot convert (class) ... to Object[][]"

javascript - 电子表格的 Google 脚本(If 语句)

sorting - 将多列堆叠为一列

google-apps-script - 谷歌应用程序脚本更改标题

google-sheets - Google 表格 - 使用日期范围作为标准的 SUMIFS 显示错误的值

excel-formula - 在 Google 表格公式中引用变量列值

google-apps-script - IMPORTXML 错误警报 : “Internal import error” - How to avoid the error by importing the data directly via script?