1

我想做的很简单。不幸的是,我似乎无法让它在气体中工作。我现在会让自己尴尬并发布我最近的(许多!)尝试:

      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 不是公式的结果。它是实际文本)。

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

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

顺便说一句,我确实对这个解决方案进行了广泛的搜索。不幸的是,我发现的所有东西都是大型复杂练习的一部分,这些练习让我浑水摸鱼。我只需要一个基本的真/假解决方案,仅此而已。

是的,我可以做最简单的一半......

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

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

   // do something

  }

  else {

   // do something else

}

(只是为了证明我不是来这里找施舍的……只是伸出援助之手)

4

1 回答 1

6

不错的尝试。很高兴看到您正在尝试什么。我认为您正在寻找的是 Stringmatch函数。这并不特定于 Apps 脚本,因此您不会在其文档中找到它,而是在通用 javascript 文档中找到它,例如在 MDN 上

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

请注意,即使我们将字符串作为match函数的参数传递,它也会被转换为正则表达式。所以,最好快速研究一下。它可能看起来太复杂了,但是一旦你掌握了它就非常有用而且相当简单。

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

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

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

if( findVal.match(/\b8762\b|^#N\/A$/) ) {
于 2013-07-06T16:07:22.513 回答