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

Excel Power Query批量正则检测Web.Page()失效问题排查与修复

Power Query批量正则检测函数Rgx_Tests() Web.Page渲染JSON缺失问题排查与修复

故障原因分析

  1. 字符串转义冲突:Power Query直接拼接JSON.stringify生成的字符串到Web.Page的HTML脚本时,JSON中的双引号会与HTML脚本的双引号发生冲突,导致JS解析时提前截断JSON,最终造成文本块缺失。
  2. 编码差异:Power Query与Web.Page的JS上下文存在字符串编码差异,批量数据的JSON字符串可能包含未被正确处理的特殊字符(如换行、制表符),导致渲染时内容丢失。

修复方案

方案1:用Base64编码传递JSON(推荐)

通过Base64编码把JSON数据转为ASCII字符串,彻底规避转义问题,JS端解码后再处理,这是最可靠的解决方式。

修复后的Rgx_Tests函数代码:

Rgx_Tests = (textList as list, pattern as text) as list =>
let
    // 将批量数据转为JSON二进制,再转Base64字符串
    JsonBinary = JSON.FromValue([Texts=textList, Pattern=pattern]),
    Base64Str = Binary.ToText(JsonBinary, BinaryEncoding.Base64),
    // 嵌入Base64数据到JS脚本,解码后处理正则检测
    Html = "<script>
        var base64Data = '" & Base64Str & "';
        var jsonStr = atob(base64Data);
        var data = JSON.parse(jsonStr);
        var results = data.Texts.map(t => new RegExp(data.Pattern).test(t));
        document.body.innerHTML = JSON.stringify(results);
    </script>",
    // 渲染页面并解析结果
    Page = Web.Page(Html),
    Results = JSON.Parse(Page{0}[Data]{0}[Children]{0}[Text])
in
    Results

方案2:手动转义JSON特殊字符(仅适用于小批量/无特殊字符场景)

如果数据量小且没有复杂特殊字符,可以手动转义JSON里的双引号,避免和HTML脚本的引号冲突:

Rgx_Tests = (textList as list, pattern as text) as list =>
let
    JsonStr = JSON.FromValue([Texts=textList, Pattern=pattern]) |> Text.FromBinary,
    // 转义双引号:Power Query里用两个双引号表示一个转义的双引号
    EscapedJsonStr = Text.Replace(JsonStr, """", """"""),
    Html = "<script>
        var data = " & EscapedJsonStr & ";
        var results = data.Texts.map(t => new RegExp(data.Pattern).test(t));
        document.body.innerHTML = JSON.stringify(results);
    </script>",
    Page = Web.Page(Html),
    Results = JSON.Parse(Page{0}[Data]{0}[Children]{0}[Text])
in
    Results

验证说明

两种方案都能解决Web.Page渲染JSON缺失的问题,其中Base64编码方案适配所有场景,包括包含特殊字符、大体积的批量数据;手动转义方案仅适合简单场景,遇到复杂文本容易再次出现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:39:53