如何让谷歌表格自定义函数scrapeDemo的结果输出到单元格
谷歌表格scrapeDemo自定义函数修改方案
修改后代码
function scrapeDemo(url) { try { var html = UrlFetchApp.fetch(url).getContentText(); var res = html.match(/<div class="cr_data rr_stockprice module">.+?(<table .+?<\/table>)/); if(!res || !res[1]) return "未匹配到对应表格数据"; var document = XmlService.parse(res[1]); var root = document.getRootElement(); // 存储返回结果的二维数组 var outputArr = []; var trNodes = root.getChild('tbody').getChildren(); trNodes.forEach((trNode) => { var tdNodes = trNode.getChildren(); var fieldName; var fieldValue; tdNodes.forEach((tdNode, idx) => { if (idx % 2 === 0) { fieldName = tdNode.getValue().trim(); } else { fieldValue = tdNode.getValue().trim(); outputArr.push([fieldName, fieldValue]); } }); }); return outputArr; } catch (e) { return "运行异常:" + e.toString(); } }
核心改动说明
- 新增结果存储变量
outputArr,格式为谷歌表格可识别的二维数组,每一行对应一对字段名与字段值 - 移除原有的日志打印逻辑,替换为往结果数组中推入数据的操作
- 函数末尾直接返回结果数组,谷歌表格会自动将数组展开为两列多行的表格,无需额外配置
- 新增基础异常捕获逻辑,匹配失败或请求出错时会返回友好提示,避免直接抛出单元格错误
使用方法
在目标单元格输入公式 =scrapeDemo("你要抓取的页面URL"),按下回车即可自动生成两列的结果表格,第一列为字段名,第二列为对应字段值。
内容的提问来源于stack exchange,提问作者Awais Anwar
相关产品推荐
相关产品推荐

