You need to enable JavaScript to run this app. Apps Script中使用变量实现字符串词汇匹配次数统计的方法
优惠活动
大模型
产品
解决方案
定价
更多

Apps Script中使用变量实现字符串词汇匹配次数统计的方法

Apps Script 动态统计字符串关键词出现次数实现

需求背景

在Apps Script开发中,需要对从单元格公式中提取的字符串,统计指定词汇、短语的出现次数。最初尝试硬编码正则的方案仅能匹配固定内容,无法灵活适配动态传入的变量值,同时遇到匹配为空时的运行时报错问题。

常见踩坑点

  • 硬编码正则(如str.match(/Train/g).length)仅能匹配写死的关键词,无法结合变量值动态调整匹配规则
  • 手动拼接带分隔符的正则字符串(如拼成'/Train/g'传入匹配逻辑)会导致规则识别失效,无法正常匹配
  • 直接调用str.match(new RegExp(searchfor, "g")).length时,如果目标字符串中无任何匹配内容,match方法会返回null,直接读取null的length属性会抛出Cannot read property 'length' of null错误

可落地实现代码

function myFunction() {
  // 待检索的目标字符串(从单元格公式提取的内容)
  const str = `'=IFERROR(IF('Train Station'!D154 ='A','A: Good - Performing well',
                       IF('Train Station'!D154='B','B: OK',
                       IF('Train Station'!D154='C','C: Do Better',
                       IF('Train Station'!D154='D','D: Give Up')))),'')'`;
  // 需要统计的关键词/短语(可动态替换为任意变量值)
  const searchfor = 'Train';

  // 核心统计逻辑
  const count = (str.match(new RegExp(searchfor, "g")) || []).length;
  Logger.log(count);
}

核心逻辑说明

  • 通过new RegExp(关键词变量, "g")动态生成匹配规则,替代硬编码的正则字面量,实现对变量值的灵活匹配,g标识代表全局检索,遍历完整字符串统计所有匹配项
  • 利用逻辑短路特性,在match结果后拼接|| []:当匹配结果为null(无匹配内容)时,自动将结果替换为空数组,空数组的length为0,从根源上规避读取null属性的报错
  • 最终拿到的长度值即为关键词的出现次数,可直接用于后续分支判断(如if (count == 4))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 07:06:04