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


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")
は、正規表現を使って cat
を dog
に変換。
g
フラグは「文字列全体で繰り返し検索する(global)」、i
フラグは「大文字・小文字を区別しない(ignore case)」という意味。
例えば、入力が "Cat catalog"
の場合、結果は "dog dogalog"
になるはずさ。

まとめ:GASでのワイルドカード活用術
- GASでのワイルドカードの利用には正規表現を使うことがポイント。
- IF文やREPLACE関数と組み合わせてデータ操作を強化できる。
- 正規表現をマスターすれば、検索や置換の処理が飛躍的に便利になる。


練習問題
以下のコードを完成させて、”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/が、大小文字を区別しない置換を可能にしている。