GASでのワイルドカード活用術:IFとREPLACEを使いこなす方法

GASでワイルドカードを使う方法ってあるのかな?IFやREPLACEで上手くデータを操作したいんだ…
猫男
猫男
catman
catman
ワイルドなことならcatmanに任せろ!

GASでのワイルドカードの基本

結論から言おう。

GAS(Google Apps Script)では、

ワイルドカードの直接のサポートはない!

 

ない、ないんだ。

キムチにみかんが入ってないのと同じで、ないんだ。ない。

が、しかし、

正規表現で似たような効果を実現できるぞ。

 

「ワイルドカード」は誰でも使いやすい「あいまい検索の道具」、

正規表現」はプログラマーが使う「超細かい条件指定の道具」と考えるとわかりやすいな。

GASでは後者の正規表現を用いて柔軟なパターンマッチを行うんだ。

 

正規表現は以下のように使用するぞ。


function searchString(str) {
  var regex = /cat.*/;
  if (regex.test(str)) {
    Logger.log("マッチしました: " + str);
  } else {
    Logger.log("マッチしませんでした: " + str);
  }
}

これは”cat”で始まる文字列を探し出すサンプルだ。

/cat.*/ とは、cat で始まり、その後に0文字以上どんな文字が続いてもOKという正規表現。

regex.test(str)は、文字列 str がパターンに当てはまるかを調べる処理。trueならマッチ、falseならマッチしない。

GASでIFにワイルドカードを使う

IF文でワイルドカード的な動作を再現するには、やはり正規表現が鍵になる。

IF文に条件式として正規表現を用いてみよう。


function checkPattern(input) {
  if (/^cat.+/i.test(input)) {
    Logger.log("パターンに一致しました。");
  } else {
    Logger.log("一致しませんでした。");
  }
}

このコードは、”cat”で始まり、その後に文字が続くかどうかチェックできる。^cat は「先頭が cat」で始まる文字列。

.+ は「1文字以上の任意の文字」が続くことを表す。

i フラグを付けているから、大文字・小文字を区別しないんだな。

例えば catapult, CATCH, category は一致し、単に cat だけでは一致しないはずだ。

正規表現って、想像以上に便利だね!
猫男
猫男

GASでREPLACEにワイルドカードを使用する

次は文字列の置換。ここでも正規表現が役に立つ。

置き換え手法を見てみよう。ワイルドカードのように正規表現を使って柔軟に文字列を置換する。


function replaceStrings(input) {
  var newStr = input.replace(/cat/gi, "dog");
  Logger.log("新しい文字列: " + newStr);
}

このコードは、”cat”を”dog”に置き換える例だ。

input.replace(/cat/gi, "dog") は、正規表現を使って catdog に変換。

g フラグは「文字列全体で繰り返し検索する(global)」、i フラグは「大文字・小文字を区別しない(ignore case)」という意味。

例えば、入力が "Cat catalog" の場合、結果は "dog dogalog" になるはずさ。

なるほど!これで大量の文字列も一発で置き換えができるんだね!
猫男
猫男

まとめ:GASでのワイルドカード活用術

  • GASでのワイルドカードの利用には正規表現を使うことがポイント。
  • IF文REPLACE関数と組み合わせてデータ操作を強化できる。
  • 正規表現をマスターすれば、検索や置換の処理が飛躍的に便利になる。
今日はワイルドカードを自在に使いこなせるようになった気がするよ!catman、ありがとう!
猫男
猫男
catman
catman
その調子だ。ワイルドになりたい時はまた呼んでくれ

 

練習問題

以下のコードを完成させて、”catnap”という文字列が含まれる場合に”dognap”に置き換えるスクリプトを書いてみましょう。


function swapAnimals(sentence) {
  // ここにコードを追加
  Logger.log(sentence);
}

var text = "I need to take a catnap.";
swapAnimals(text);

 

 

解答・解説


function swapAnimals(sentence) {
  var newSentence = sentence.replace(/catnap/gi, "dognap");
  Logger.log(newSentence);
}

var text = "I need to take a catnap.";
swapAnimals(text);

replaceメソッドを用いて、”catnap”を”dognap”に置き換える。

正規表現の/i/が、大小文字を区別しない置換を可能にしている。