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 Script に固有のものではないため、ドキュメントには記載されていませんが、MDNなどの一般的な JavaScript ドキュメントには記載されています。

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 に答える