如何通过Google Apps Script提取.htm文件数据并导入谷歌表格/Excel
谷歌云盘HTM报表数据提取写入谷歌表格方案
核心逻辑
SAP导出的HTM格式报表默认使用标准<table>标签存储结构化数据,直接通过Google Apps Script解析HTML内的表格节点,转换为二维数组后即可批量写入谷歌表格。
可直接复用代码
function parseSapHtmToSheets() { // 按需修改以下3个参数即可 const HTM_FILE_ID = "替换为云盘内HTM文件的ID"; const TARGET_SHEET_ID = "替换为目标谷歌表格的ID"; const TARGET_SHEET_NAME = "替换为要写入的工作表名称,例如Sheet1"; // 1. 读取云盘HTM文件内容 const htmFile = DriveApp.getFileById(HTM_FILE_ID); // 若出现中文乱码,可替换为 htmFile.getBlob().getDataAsString("GBK") 或 "GB2312" const htmContent = htmFile.getBlob().getDataAsString(); // 2. 解析HTML内的表格数据 const htmlDocument = XmlService.parse(htmContent); const allElements = htmlDocument.getRootElement().getDescendants(); // 筛选所有table节点,若HTM内有多个表格,修改[0]的索引值选择对应报表表格 const reportTable = allElements.filter(item => item.getType() === XmlService.ContentTypes.ELEMENT && item.asElement().getName() === "table" )[0].asElement(); const tableRows = reportTable.getChildren("tr"); // 转换为表格可识别的二维数组 const outputData = []; tableRows.forEach(row => { const cellValues = row.getChildren("td").map(cell => cell.getText()); outputData.push(cellValues); }); // 3. 批量写入谷歌表格 const targetSheet = SpreadsheetApp.openById(TARGET_SHEET_ID).getSheetByName(TARGET_SHEET_NAME); // 清空原有内容,不需要可删除该行 targetSheet.clearContents(); targetSheet.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData); }
使用说明
- 首次运行脚本时按系统提示完成云盘、表格权限授权即可
- 可直接将该逻辑和你已有的Gmail附件转存云盘脚本拼接,实现从接收邮件到数据入表的全流程自动化
- 如果SAP导出的HTM存在不规范标签导致解析报错,可替换为宽松HTML解析逻辑适配异常格式
- 导出到Excel的需求可直接在谷歌表格中选择「文件>下载>Microsoft Excel」即可,也可在脚本中追加导出Excel到云盘的逻辑
内容的提问来源于stack exchange,提问作者Nicholas
相关产品推荐
相关产品推荐

