GASのReplaceメソッドで文字置換
最終更新日:2026年8月7日
はじめに
| 項目 | Google Apps Script | Excel VBA | Python |
|---|---|---|---|
| 主な用途 | Google Workspace自動化 | Excel業務自動化 | 汎用自動化・データ分析 |
| 学習難易度 | 低(JavaScript系) | 中 | 低〜中 |
| 実行環境 | クラウド(無料) | Windows/Excel必須 | ローカル or クラウド |
| Googleサービス連携 | 最高 | 低 | API経由で可 |
GAS(Google Apps Script)を使っていて、文字列を置換させる処理を組み込みたい場面はよくあります。GASでは文字列を置換するためのReplaceメソッドがあります。これを使ってテキスト形式のデータやCSVなど様々な形式のデータの中の文字列を置換させることができます。本記事ではGASのReplaceメソッドの使い方を紹介していきます。Replaceメソッドで文字列を置換したい場合、必ず正規表現を使う場面がありますので、簡単ではありますが、よく使う正規表現に関しても紹介します。
この記事でわかること
前準備
Replaceメソッドをさっそく使っていきましょう。まず、GASで新規プロジェクトを立ち上げます。以下、手順に沿ってやってみてください。

1. Google Driveにログインする
2. 左上の「新規」を押下
3. 「その他」から「Google Apps Script」を選択する
以下のようにGASのスクリプトが開かれます。
function myFunction() {
}
myFunctionの波括弧にコードを記述していきます。
基本の使い方
では、Replaceの基本的な使い方を見ていきましょう。書き方は以下になります。
変数.replace("検索パターン", "置換後文字列")
さっそく文字を置換して行きましょう。以下のようにコードを記述してください。
function myFunction() {
var char = "ABCDABCD";
var str = char.replace("A", "Z");
console.log(str);
}
// ログ
// ZBCDABCD
上記例では、文字列の中からAをZに変換しようとしています。ここで注意したいのですが、デフォルトだと最初に検索がヒットした文字しか置換してくれません。複数個存在する文字を置換してあげる場合どうしたら良いでしょうか?そういう場合には正規表現を使用します。書き方は以下になります。
変数.replace(/正規表現/オプション, "置換後文字列")
注意しておきたいのは、正規表現を記述する場合は”/”(スラッシュ)で囲んであげる必要があります。実際にコードを叩いてみましょう。
function myFunction() {
var char = "ABCDabcd";
var str = char.replace(/A/gi, "Z");
console.log(str);
}
// ログ
// ZBCDZbcd
先程と同様に文字列の中からAに合致するものをZに置換しました。また今回はオプションである、gとiを指定しました。gは対象文字列から複数一致させたい場合に使います。iは大文字と小文字の区別をしません。正規表現にgオプション、iオプションを付け加えることで、最初の大文字のAと5番目の小文字のaが一致し、Zに置換されました。他にも正規表現を使ったReplaceメソッドを試してみましょう。
正規表現を使ったReplace(メタ文字)
メタ文字とは正規表現の中で特殊なふるまいをする特殊文字です。非常に良く使われるものを紹介します。まずは、以下のコードを打ってみましょう。
function myFunction() {
var char = "ABCABCABC";
var str = char.replace(/A.*?C/g, "0");
console.log(str);
}
// ログ
// 000
解説すると、Aから始まり、任意の文字を0個から複数個挟み、Cで終わる文字列、で最短のものという意味になります。”最短のもの”と言いましたが、Aから始まりCで終わるものは、”ABC”になります。ABCは文字列中に3つ存在していますので、それらがそれぞれReplaceされ、「000」となりました。以下よく使うメタ文字ですので、是非覚えてください。
.(ドット) : 任意の一文字(改行以外)
*(アスタリスク) : 直前の文字の0回以上の繰り返し
?(クエッションマーク) : 最短一致
もし?(クエッションマーク)を付けない場合、最長一致させます。最短のものや最長のものと言っても実際イメージしにくいですので、以下のコードと結果を最短一致のものと比べてみてください。
function myFunction() {
var char = "ABCABCABC";
var str = char.replace(/A.*C/g, "0");
console.log(str);
}
// ログ
// 0
今回の結果は0が一個になってしまいました。何が起こったかと言うと、Aから始まり、任意の文字を0個から複数個挟み、Cで終わる文字列、で最長のものを取得した結果となります。Aから始まりCで終わる最長のものは、”ABCABCABC”になります。
正規表現を使ったReplace(グループ)
次にグループを見ていきましょう。GASのReplaceメソッドでグループを使えば、正規表現で取得した値を記憶させて使用することができます。以下コードを書いてみましょう。
function myFunction() {
var char = "080-0000-1111";
var str = char.replace(/(\d{3})-(\d{4})-(\d{4})/g, '$2 $1 $3');
console.log(str);
}
// ログ
// 0000 080 1111
使った文字列は携帯番号を想定しました。やや複雑な正規表現になりますが、意外と単純です。
\d(バックスラッシュディー): 数字一文字を表します。[0-9]としても0~9の数字を表せます。
{}(波括弧) : 桁数を表します。数字を表すメタ文字とセットにします。
()(括弧) : 文字列をグループ化させます。
グループ化は文字をセットにしておくイメージです。例えば「じゃじゃじゃじゃーん」という文字列があった場合、/(じゃ)+/と正規表現を指定させると、「じゃじゃじゃじゃ」までを取得してあげることができます。一般的にはこうした文字列の繰り返しを検索する場合が多いですが、GASやJavaScriptではグループ化で一致した文字列を記憶させ、$(ドルマーク)を使って操作することができます。
今回の正規表現を説明すると、最初のグループは(\d{3})になります。これに一致するのが”080″となり、$1に格納されます。二つ目の(\d{4})は、2番目の”0000″に一致しますので、$2に格納されます。今回は$2を最初に持ってきていますので、結果は、0000が最初にきます。
正規表現を使ったReplace(その他)
またGASのReplaceメソッドでは”$&”を使って、文字列を操作することが可能です。以下を見てください。
function myFunction() {
var char = "a,b,c";
var str = char.replace(/a|b|c/g, "<'$&'>");
console.log(str);
}
// ログ
// <'a'>,<'b'>,<'c'>
変換後の文字列に<$&>を入れてあげることで、a又はb又はcに一致した値に、それぞれ<”>を付与することができました。以下は|(バー)の説明です。
|(バー) : これはOR条件として複数の文字をセットします。
この記事のポイント
- replaceメソッドはデフォルトでは最初にヒットした1件しか置換しないため、複数箇所を置換するには正規表現+gオプションが必要
- 正規表現のグループ化(括弧)と$1・$2等の記憶変数を組み合わせることで、桁の並べ替えなど柔軟な置換処理ができる
- 「.」「*」「?」等のメタ文字や、最短一致・最長一致の違いを理解しておくと、意図しない置換結果を防げる
よくある質問
- Q. replace()で複数箇所を一度に置換するにはどうすればよいですか?
- A. 検索パターンを正規表現にし、gオプション(グローバル)を付けることで、一致するすべての箇所を置換できます(例:
str.replace(/A/g, "Z"))。 - Q. 大文字・小文字を区別せずに置換したい場合は?
- A. 正規表現にiオプションを付けます。gオプションと組み合わせて
/検索文字/giとすることで、大文字小文字を区別せずすべて置換できます。 - Q. 最短一致と最長一致はどう使い分けますか?
- A. デフォルトの
*や+は最長一致(貪欲マッチ)です。区切りごとに短く一致させたい場合は、*?のように「?」を付けて最短一致(非貪欲マッチ)にします。
関連記事
最後に
いかがでしたでしょうか?GASのReplaceメソッドについて正規表現と合わせていくつか紹介させて頂きました。Replaceメソッドを他のメソッドと組み合わせれば色々なことが可能になります。例えばReplaceメソッドの第二引数(変換後文字列)の箇所にFunctionを埋め込んで、取得された文字列の小文字を大文字に変換させたり、またIf文やFor文を組み合わせても幅が広がるはずです。是非色々試してみてください。
▼ アクロビジョンについて


