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

Google Apps Script中如何比较文本判断变量是否含指定字符串

Google Apps Script 文本包含判断实现方案

Google Apps Script 基于JavaScript V8运行时,原生提供完整的字符串处理内置方法,判断字符串是否包含指定文本不需要自行编写底层匹配逻辑,直接调用原生API即可。
你提供的示例代码无法得到预期匹配结果,存在两处API使用错误:

  • 错误1:getRange(i, 2).getValues() 返回值是二维数组,即使只选取单个单元格,返回结构为[[单元格内容]],直接对二维数组调用字符串匹配方法无法命中结果。单个单元格取值可使用getValue()方法,批量取值时需要通过数组索引读取对应位置的内容。
  • 错误2:循环逐行调用getRange、getValues的写法性能极低,数据量稍大就会触发服务调用配额限制,正确做法是一次性读取目标范围的所有数据,在内存中完成循环判断。

可直接使用的内置匹配方法

判断字符串包含关系直接使用JavaScript原生字符串方法即可:

  • 区分大小写匹配:调用字符串实例的includes()方法,返回布尔值代表是否存在目标子串,是当前最直观的写法
  • 不区分大小写匹配:先将原字符串统一转为小写/大写,再调用includes()匹配
  • 兼容旧版Rhino运行时的写法:使用indexOf()方法,返回值不等于-1即代表存在目标子串

修正后的可运行代码

function myFunction() {
    var objetoLibro = SpreadsheetApp.openById("1dv4FWDjhCJrruzDZsEyPPjUBHjUI-FJ9RhG68nL07qI");
    var objetoHoja = objetoLibro.getSheets()[0];
    var dblUltimaFila = objetoHoja.getLastRow();
    // 一次性读取B列全量数据,减少服务端API调用
    var columnaBValores = objetoHoja.getRange(1, 2, dblUltimaFila, 1).getValues();

    for (var i = 0; i < columnaBValores.length; i++) {
        // 读取当前行B列的文本内容
        var valorCelda = columnaBValores[i][0].toString();
        // 区分大小写判断是否包含目标文本
        if (valorCelda.includes("Jornada")) {
            Logger.log("第" + (i + 1) + "行匹配结果:" + valorCelda);
        }
    }
}

如果需要不区分大小写匹配,将判断条件替换为valorCelda.toLowerCase().includes("jornada")即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:18:20