【问题标题】:Import and parse a HTML file from Drive to Sheets将 HTML 文件从云端硬盘导入并解析到表格
【发布时间】:2020-01-27 14:51:53
【问题描述】:

我在 google 驱动器中有一堆 HTML 文件,但我需要从中提取表格并放入 Gsheets。

到目前为止,我看到了ImportHTML 功能,但它不适用于驱动链接。

如何从我的云端硬盘导入和解析 HTML 文件?谢谢

【问题讨论】:

  • 您可以结合使用UrlFetchApp.fetch 和XmlService.parse 进行进一步处理,但这会很费力。首先将 html 文件转换为 csv 文件可能更容易(例如使用在线转换器)。
  • 我需要一个代码解决方案,而无需离开在线转换器中转换文件。谢谢

标签: html google-apps-script google-sheets


【解决方案1】:
  • 您希望使用 Google Apps 脚本和/或电子表格的内置函数从 HTML 数据中放入表格的值。
  • HTML 文件已放入您的 Google 云端硬盘。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

模式一:

在此模式中,IMPORTXML 用于使用 Web 应用程序部署的表。

用法:

1。将以下脚本复制并粘贴到脚本编辑器中。

function doGet(e) {
  var fileId = e.parameter.id;
  var html = DriveApp.getFileById(fileId).getBlob().getDataAsString();
  var html = "<sample>" + html.match(/<table[\w\s\S]+?<\/table>/gi).join("") + "</sample>";
  return ContentService.createTextOutput(html).setMimeType(ContentService.MimeType.XML);
}

2。部署 Web 应用程序。

  1. 在脚本编辑器上,通过“发布”->“部署为 Web 应用”打开一个对话框。
  2. 为“执行应用程序为:”选择“我”。
  3. 为“谁有权访问应用程序:”选择“任何人,甚至匿名”。。
  4. 单击“部署”按钮作为新的“项目版本”。
  5. 自动打开“需要授权”对话框。
    1. 点击“查看权限”。
    2. 选择自己的帐户。
    3. 点击“此应用未验证”中的“高级”。
    4. 点击“转到###项目名称###(不安全)”
    5. 点击“允许”按钮。
  6. 点击“确定”。
  7. 复制 Web 应用程序的 URL。就像https://script.google.com/macros/s/###/exec。
    • 当您修改 Google Apps 脚本时,请重新部署为新版本。这样,修改后的脚本就会反映到 Web 应用程序中。请注意这一点。

3。把公式放进去。

请把下面的公式放到一个单元格中。

=IMPORTXML("https://script.google.com/macros/s/###/exec?id=###fileId###","//tr")
  • ###fileId### 是 Google Drive 上 HTML 文件的文件 ID。

模式 2:

在此模式中,从 HTML 数据中检索 HTML 表格,然后使用 Sheets API 将表格放入电子表格中。

用法:

1。将以下脚本复制并粘贴到脚本编辑器中。

请设置fileId、spreadsheetId和sheetName的变量。

function myFunction() {
  var fileId = "###";  // Please set the file ID of HTML file.
  var spreadsheetId = "###";  // Please set the Spreadsheet ID for putting the values.
  var sheetName = "Sheet1";  // Please set the sheet name for putting the values.


  // Retrieve tables from HTML data.
  var html = DriveApp.getFileById(fileId).getBlob().getDataAsString();
  var values = html.match(/<table[\w\s\S]+?<\/table>/gi);

  // Put the HTML tables to the Spreadsheet.
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var sheet = ss.getSheetByName(sheetName);
  var sheetId = sheet.getSheetId();
  var rowIndex = 0;
  values.forEach(function(e) {
    var resource = {requests: [{pasteData: {html: true, data: e, coordinate: {sheetId: sheetId, rowIndex: rowIndex}}}]};
    Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId);
    rowIndex = sheet.getLastRow();
  })
}

2。启用表格 API。

请enable Sheets API at Advanced Google services.

3。运行脚本。

当您运行函数 myFunction 时,将从 HTML 数据中检索值并将它们放入电子表格中。

注意:

  • 这些是简单的示例脚本。所以请根据您的实际情况修改它们。

参考资料:

很遗憾,根据您的问题,我无法理解您的实际 HTML 数据。因此,如果发生错误并且这不是您想要的方向,我深表歉意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多