求助:Google Sheets中用ImportXML提取隐藏categoryId的方法
提取页面脚本中categoryId的Google Sheets公式问题
问题背景
需要从URL对应的网页中提取嵌入在脚本里的"categoryId":"xxxxxx"中的纯数字ID,该ID并非URL的直接参数,而是藏在页面的复杂脚本结构中。
已尝试的失败方法及问题
直接复制XML路径的公式:
=IFNA(regexextract(IMPORTXML(B3,"/html/body/script[1]/text())))","[0-9]+")))问题:公式括号不匹配,且直接提取所有数字会捕获页面中无关的数字内容。
指定标识的公式:
=IFNA(regexextract(IMPORTXML(B2,"//script[contains(., 'categoryId')]/text()")))问题:
REGEXEXTRACT缺少必要的正则表达式参数,无法精准定位categoryId的结构。分步处理(在"Try 2"标签页):
- 提取脚本内容:
=IMPORTXML(B2, "/html/body/script[1]/text()") - 提取ID:
=REGEXEXTRACT(C2, """categoryId"":""(\d+)"""")
问题:正则表达式的引号转义冗余,且若
IMPORTXML返回多行内容,REGEXEXTRACT无法正确匹配目标内容。- 提取脚本内容:
可行解决方案
方案一:修正正则并合并为单公式
=IFNA(REGEXEXTRACT(TEXTJOIN("", TRUE, IMPORTXML(B2, "//script[contains(., 'categoryId')]/text()")), """categoryId"":""(\d+)"""))
- 逻辑:用
TEXTJOIN将IMPORTXML返回的多行脚本内容合并为单文本,再通过精准正则匹配"categoryId":"数字"的结构,提取其中的数字组。
方案二:使用自定义IMPORTJSON函数(适用于标准JSON结构脚本)
- 打开Google Sheets的脚本编辑器(工具 > 脚本编辑器)
- 粘贴IMPORTJSON的自定义开源代码(可通过Google搜索获取官方实现)
- 在表格中使用公式:
=IFNA(IMPORTJSON(B2, "categoryId"))
- 逻辑:若页面脚本为标准JSON格式,IMPORTJSON可直接解析脚本内容并提取指定字段。
方案三:自定义Apps Script抓取函数
- 打开脚本编辑器,粘贴以下代码:
function getCategoryId(url) { var response = UrlFetchApp.fetch(url); var content = response.getContentText(); var match = content.match(/"categoryId":"(\d+)"/); return match ? match[1] : ""; } - 在表格中调用函数:
=getCategoryId(B2)
- 逻辑:直接通过UrlFetchApp抓取页面内容,再用正则精准匹配categoryId,不受IMPORTXML的内容限制,稳定性更高。
内容的提问来源于stack exchange,提问作者Guhlis
相关产品推荐
相关产品推荐

