Google Apps Scriptの『Replaceメソッド』は、ある文字列について、その中に含まれる文字列を別の文字列に置換したいときに用いるメソッドです。
例えば、アンケートで集めたデータを整形するときに便利ですね。
『123-4567-8910』『123(4567)8910』→『12345678910』
『(株)あいうえお』『(株)あいうえお』→『株式会社あいうえお』
※アンケートフォームの入力規則をちゃんと整えておけよな!っていう意見には耳塞いで聞こえなかったことにさせて頂きます笑
テキスト処理における非常に強力なツールで、使いこなせるようになっておくと、できることがかなり増えます!
スプレッドシート&GASを中心に説明していきますので、興味ある方はぜひ、最後まで見てってください!

こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。ブラック企業勤め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますように!と願いながら記事書いていきます!
GASのReplaceメソッドについて
Google Apps Script(GAS)のReplaceメソッドは、テキスト処理における非常に強力なツールです。このメソッドを使うことで、特定の文字列を効率的に検索し、置換することが可能になります。
- スプレッドシートのデータ処理: 例えば、スプレッドシート内の特定の語句を一括で置換する場合、Replaceメソッドを使用することで、手作業で行うよりもはるかに高速に処理を行うことができます。
- 自動化スクリプト: 日々のレポートやメールで特定の語句を更新する必要がある場合、Replaceメソッドを用いることで、これらの作業を自動化し、時間を節約することが可能です。
Replaceメソッドの基本と使い方
String.replace(検索パターン,置換パターン)
検索パターンと置換パターンを指定することで、文字列(String)を置換することができます。
例えば、スプレッドシートA列に『123-4567-8910』の形式で電話番号が書かれている文字列を、『12345678910』という感じでB列に出力したい場合は、下記のようなGASとなります。
function outputPhoneNumbersWithoutHyphens() {
// スプレッドシートを開く
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// A列のデータを取得(ここではA列の1行目から始まる範囲を指定)
var range = sheet.getRange("A1:A" + sheet.getLastRow());
var values = range.getValues();
// 各セルのデータをループ処理
for (var i = 0; i < values.length; i++) {
if (values[i][0]) {
// ハイフンを削除したデータをB列に出力
var newValue = values[i][0].replace(/-/g, "");
sheet.getRange(i + 1, 2).setValue(newValue);
}
}
}

このようにいい感じに、『-』を『』(空白)に置換することができました。
ここで一つポイントになるのが、この部分。
var newValue = values[i][0].replace(/-/g, "");
replaceメソッドの書き方ですが、『replace(/-/g, “”)』ではなく、『replace(“-“, “”)』でも動きそうですよね?
『-』を『』にするだけですから、普通の置換だと置換前『-』、置換後『』にしてもちゃんとハイフンを消し去ってくれそうです。
試しに、『replace(“-“, “”)』のGASでやってみましょう。

すると、1つ目の『-』は『』に変えてくれましたが、2つ目の『-』は変えてくれません。
これが注意のポイントで、replaceメソッドは文字列頭から1つ目の指定文字列部分しか変えてくれません。
但し、正規表現を活用することで、文字列に複数出現する部分を置換することができます。
詳しくは、下の『正規表現を用いたReplaceメソッドの活用』で紹介してきます!
正規表現を用いたReplaceメソッドの活用
Replaceメソッドでは、正規表現を用いることで、様々な置換を行うことができます。
Google関連のツールで正規表現というのは、『Googleが作ったRE2正規表現エンジン』のことを言います。
Google-RE2-Githubページ(英語)
変換したい文字列が複数箇所存在する文字列を、全て置換する
先程の電話番号『123-4567-8910』→『12345678910』もそうですが、文字列に複数箇所置換したい文字列が存在する場合には、正規表現を用いる必要があります。
replace(/-/g, "")
『/』(スラッシュ)で囲むことでパターン化することができ、『g』は「グローバル」検索を示すフラグで、これをつけることで、文字列全体に対して、すべてのパターンで囲まれた部分の文字列(今回は『-』のこと)を置換することができるようになります。
『あいうえおあいうえお』の『あ』を『か』に全て置換したい場合は、こうなります。
replace(/あ/g, "か")
『アンパンマン』の『ン』を『ソ』に全て置換したい場合は、こうなりますね。
replace(/ン/g, "ソ")
変換したい文字列のレパートリーが複数存在する文字列を、全て置換する
文章にすると分かりづらいですが、例えば、『あいうえお』の文字列について、『い』と『え』を『こ』に置換する必要があるときにも正規表現が便利です。
もちろん正規表現なしで、Replaceメソッドを2回やれば置換できるんですけど、おそらく正規表現を用いたほうが、GASの稼働時間の節約にもつながるかと思います。
replace(/[いえ]/g, "こ")
『/』と『g』の役割は先程紹介したので割愛するとして、『[]』(角括弧)の役割は、その中に置かれた任意の文字に一致する「OR」のような機能を持っており、括弧内のいずれかの文字に一致する単一の文字を探します。
ってことで、『(/[いえ]/g』の正規表現が意味するところとしては、「い」または「え」のいずれか一文字に一致し、文字列全体でこれらの文字をターゲットにしますよということになります。
Replaceメソッドに関連したグーグルスプレッドシートで使える関数
正規表現を用いた置換や抽出について、グーグル先生は関数を用意してくださってますので、こちらも合わせてチェックしてみてください!


【まとめ】GASのReplaceメソッドについて
Google Apps Scriptで使える『Replaceメソッド』について解説してみました!
正規表現と組み合わせることで、様々な文字列の置換に対応することができますので、是非マスターしちゃってください!