【发布时间】:2019-09-07 23:56:56
【问题描述】:
我正在尝试将以下数据添加到 Google 表格中,但使用 IMPORTXML 执行此操作看起来很棘手。知道怎么做吗?
【问题讨论】:
标签: google-apps-script google-sheets google-sheets-formula
我正在尝试将以下数据添加到 Google 表格中,但使用 IMPORTXML 执行此操作看起来很棘手。知道怎么做吗?
【问题讨论】:
标签: google-apps-script google-sheets google-sheets-formula
I am trying to get the following data onto a Google Sheet,我是这样想的。如果我的理解是正确的,那么这个答案呢?
不幸的是,HTML 的文件似乎很大。所以在使用=IMPORTXML("https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yieldAll","//title")时,会出现Resource at url contents exceeded maximum size.的错误。当我从 URL 中检索 HTML 数据时,HTML 数据的大小约为 9 MB。认为错误的原因是由于这一点。因此,作为一种解决方法,使用 Google Apps 脚本怎么样?在此解决方法中,使用了以下流程。
UrlFetchApp 检索 HTML 数据
Parser 解析 HTML 数据。PasteDataRequest 将解析后的数据放到电子表格上的活动工作表中。请安装Parser。关于库的安装,可以在here看到。
M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV。请将以下脚本复制并粘贴到电子表格的容器绑定脚本的脚本编辑器中。以上设置完成后,请运行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());
}
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
Google Apps Script 的新 IDE 终于在 2020 年 12 月 7 日发布。Ref 至此,在现阶段,为了安装 Google Apps Script 库,需要使用 Google Apps 的脚本 ID脚本项目。
在这种情况下,当安装Parser 的Google Apps 脚本库时,很遗憾,无法使用此ID M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV。
所以当你使用新的IDE时,请使用下面的脚本ID。
1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw
此脚本 ID 是 M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV 的 Google Apps 脚本项目的 ID。这样,Parser 的库就可以安装到新的 IDE 中了。
关于安装库的方法,可以看the official document。
【讨论】:
I was not able to add the Parser library.,我认为这个问题的原因可能是由于新的IDE。所以,我更新了我的答案。你能确认一下吗?如果这不是您期望的方向,我深表歉意。
new Parser(html) 而不是 Parser.data(html))。