搜索/查找if语句的文本

时间:2013-07-06 15:42:27

标签: google-apps-script

我想做的事情非常简单。不幸的是,我似乎无法让它在天然气中工作。 我现在将自己难堪并发布我的最新(很多!)尝试:

      var ss = SpreadsheetApp.getActiveSpreadsheet(); // 
      var findVal = ss.getRange("A1").getValue()
      if (findVal.findText("8762", "#N/A"));
      { 
        // do something
      }
      else {
        // do something else
      }

我只是想在特定的单元格中搜索大段文本中的数字8762,或字符串#N / A,它将是单元格中唯一的文本。 (仅供参考:#N / A不是公式的结果。它是实际文本。)

显然我正在尝试使用“find”的结果作为条件语句的驱动程序。

我不是VBA世界中的蠢货,但是电子表格设置中的javascript有时会让我觉得非常愚蠢。比如现在。

不过,我确实在广泛搜索这个解决方案。不幸的是,我发现的所有内容都是大型复杂运动的一部分,这些运动让我感到困惑。我只需要一个基本的真/假解决方案,仅此而已。

是的,我可以轻松完成一半......

    var ss = SpreadsheetApp.getActiveSpreadsheet(); // 
    var findVal = ss.getRange("A1").getValue()

     if (findVal == "#N/A") { 

   // do something

  }

  else {

   // do something else

}

(只是为了证明我不是在寻找讲义......只是伸出援助之手)

1 个答案:

答案 0 :(得分:6)

不错的尝试。很高兴看到你在尝试什么。我认为你要找的是String match函数。这不是特定于Apps脚本,因此您不会在其文档中找到它,而是在通用的JavaScript文档中找到它,例如on MDN

if( findVal.match('8762') || findVal == '#N/A' ) {
  //do something
} else {
  //do something else
}

请注意,即使我们将字符串作为match函数的参数传递,它也会转换为regular expression。所以,你可以快速学习它。它看起来可能看起来太复杂了,但是一旦掌握它就非常有用而且相当简单。

执行上述操作的另一种方法:

if( findVal.match(/8762|^#N\/A$/) ) {

更好的是,我们可以保证您的号码是“单独的”而不是更大数字的一部分,如187621所示。

if( findVal.match(/\b8762\b|^#N\/A$/) ) {