首页 > 解决方案 > 如果 string.match() 不匹配,为什么谷歌应用程序脚本的执行被取消?

问题描述

如果我在 Google 表格中使用以下函数,它不会返回值“未找到”。日志告诉我:“执行已取消”。

这发生在以下行:

var found = text.match(re);

如果我将 searchText 更改为“abc”,它就像一个魅力。

function example()
{
  var text = "abc cba";
  var searchText = "abcd";

  var re = new RegExp(searchText,"g");

  var found = text.match(re);

  if (found === undefined) { 
    return "not found";
  }
  else {
    return found;
  }
} 

为什么脚本执行被取消,我如何在不使用正则表达式的情况下通过使用例如text.search(re) 与match()之前的if 结合来防止这种行为?

标签: google-apps-script

解决方案


原因:

的返回值string.match

一个数组,其内容取决于全局 (g) 标志的存在与否,如果未找到匹配项,则为null 。

null !== undefined

因此,当它为 null 时,该else语句将执行并将 null 返回给工作表。“执行取消”无关紧要,可能来自旧日志问题

解决方案:

使用 null 比较返回值。

片段:

if (found === null) { 

推荐阅读