You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助: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"标签页):

    1. 提取脚本内容:
      =IMPORTXML(B2, "/html/body/script[1]/text()")
      
    2. 提取ID:
      =REGEXEXTRACT(C2, """categoryId"":""(\d+)"""")
      

    问题:正则表达式的引号转义冗余,且若IMPORTXML返回多行内容,REGEXEXTRACT无法正确匹配目标内容。

可行解决方案

方案一:修正正则并合并为单公式

=IFNA(REGEXEXTRACT(TEXTJOIN("", TRUE, IMPORTXML(B2, "//script[contains(., 'categoryId')]/text()")), """categoryId"":""(\d+)"""))
  • 逻辑:用TEXTJOIN将IMPORTXML返回的多行脚本内容合并为单文本,再通过精准正则匹配"categoryId":"数字"的结构,提取其中的数字组。

方案二:使用自定义IMPORTJSON函数(适用于标准JSON结构脚本)

  1. 打开Google Sheets的脚本编辑器(工具 > 脚本编辑器)
  2. 粘贴IMPORTJSON的自定义开源代码(可通过Google搜索获取官方实现)
  3. 在表格中使用公式:
    =IFNA(IMPORTJSON(B2, "categoryId"))
    
  • 逻辑:若页面脚本为标准JSON格式,IMPORTJSON可直接解析脚本内容并提取指定字段。

方案三:自定义Apps Script抓取函数

  1. 打开脚本编辑器,粘贴以下代码:
    function getCategoryId(url) {
      var response = UrlFetchApp.fetch(url);
      var content = response.getContentText();
      var match = content.match(/"categoryId":"(\d+)"/);
      return match ? match[1] : "";
    }
    
  2. 在表格中调用函数:
    =getCategoryId(B2)
    
  • 逻辑:直接通过UrlFetchApp抓取页面内容,再用正则精准匹配categoryId,不受IMPORTXML的内容限制,稳定性更高。

内容的提问来源于stack exchange,提问作者Guhlis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 14:32:17