Google Apps Script(GAS)を使っていると、文字列を操作するシーンに頻繁に出会います。例えば、メールの本文から必要な情報だけを切り出したいときや、スプレッドシートに入力された長いテキストから特定部分を抽出したいときです。こうした場面で「文字列の切り出し」をうまく使えば、手作業での確認やコピペ作業を自動化でき、業務効率が一気に上がります。本記事では、正規表現やmatchを活用した文字列処理の方法を具体例とともに解説していきます。
GASで文字列を切り出す基本の方法を知る
なぜ文字列の切り出しが重要なのか
GASはGoogleが提供するスクリプト環境で、Gmail、Googleスプレッドシート、カレンダーなどを自動化するのに使われます。その中で「gas 文字列 切り出し」が重要なのは、ビジネスで扱うデータの多くがテキスト形式だからです。例えば顧客リストの住所から郵便番号だけを抽出したい、メールの件名から日付を取り出したいといったケースがあります。
こうした処理を人が手作業で行うと膨大な時間がかかりますが、GASのコードで一度仕組みを作れば、ボタン一つで実行できます。
基本的な文字列操作の書き方
GASはJavaScriptと同じ文法を使うため、文字列操作の方法もJavaScriptに準じます。代表的なメソッドは以下の通りです。
substring(start, end)
:開始位置から終了位置までを切り出すsubstr(start, length)
:開始位置から指定した長さ分を切り出すslice(start, end)
:範囲を指定して切り出す
例えば「0123456789」という文字列から「345」を取り出したい場合、以下のように書けます。
let str = "0123456789";
let result = str.substring(3, 6);
Logger.log(result); // 345
実務での具体的な活用事例
ある営業チームでは、毎日届く問い合わせメールの件名に「【案件番号:12345】」という形式で番号が入っています。これを毎回手作業でコピーして管理表に貼り付けていましたが、GASを使い件名の「:」以降の数字をsubstring
で切り出す処理を作成。結果、1日あたり30分以上かかっていた作業がゼロになりました。
注意点と失敗事例
基本的なメソッドを使う際の注意点は、文字列のインデックスが0から始まることです。例えば「substring(1,3)」と書いた場合、取り出されるのは「2番目から3番目」ではなく「1番目から2番目の直前まで」です。初心者はこの範囲指定でよくつまずきます。
このような小さな誤解が、大量データを扱う現場では大きなエラーにつながるため、テストをしながら少しずつ進めるのがコツです。
正規表現を使って文字列を自在に抽出する方法
正規表現とは何か
「gas 文字列 切り出し 正規表現」と検索されることが多いのは、単純な範囲指定では対応できない複雑な抽出が必要になるからです。正規表現(regular expression)とは、文字列のパターンを表現する方法です。例えば「郵便番号のように数字3桁-数字4桁の形」を探すといったことができます。
正規表現の基本例
GASではJavaScriptと同じように正規表現を使えます。例えばメール本文から「〒123-4567」の形式を探したい場合は以下のように書けます。
let text = "住所: 東京都新宿区 〒123-4567";
let match = text.match(/\d{3}-\d{4}/);
Logger.log(match[0]); // 123-4567
この例では\d{3}-\d{4}
というパターンを使い、「数字3桁-数字4桁」の部分だけを切り出しています。
ビジネス現場での利用シーン
正規表現は請求書や領収書の整理にも役立ちます。例えば、PDFからテキスト抽出した請求書データには「合計金額: 125,000円」といった表記があります。ここから「125000」という数字だけを抜き出すには正規表現が便利です。ある経理担当者は、これをGASで自動化し、毎月数十件の請求書を自動的に集計できるようになりました。
メリットとデメリット
正規表現を使うメリットは「柔軟な抽出が可能」なことです。しかしデメリットとして「読みやすさが低い」「初心者には学習コストが高い」という点があります。例えば/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/
のようなメールアドレスを判定するパターンは、一見すると暗号のように見えます。
そのため、チームで運用する場合は「コメントで何をしているのか説明を書く」ことが大切です。
注意点と失敗事例
ある開発チームでは、正規表現で数字を抽出する処理を作りましたが、マイナス記号を考慮していなかったため「-1200」が「1200」として処理されるミスが発生しました。正規表現は強力ですが、対象のパターンを正しく網羅できているか必ず確認しましょう。
matchを使って特定の文字列を切り出す方法
matchメソッドの基本
「gas 文字列 切り出し match」でよく検索されるのは、正規表現と組み合わせて文字列を抽出するパターンを求めている人が多いからです。match
は文字列の中から指定したパターンに合う部分を取り出すメソッドです。
let text = "本日の売上は¥25000です";
let match = text.match(/¥\d+/);
Logger.log(match[0]); // ¥25000
この例では「¥」記号に続く数字列を切り出しています。
業務現場での実用例
営業部門では、日報メールの本文に「売上: ¥50000」のような記載があるケースがあります。これを手作業で集計すると手間がかかりますが、GASでmatch
を使えば、全メールから売上金額だけを切り出して自動集計することが可能です。ある企業ではこれを導入した結果、営業事務の作業時間を月に10時間以上削減できました。
他業種での応用
教育機関でも、学生のアンケート回答を自動処理するためにmatchが使われています。回答文中から「評価スコア: 4.5」のような数値だけを抜き出し、スプレッドシートに集計するのです。このように、数字や特定フォーマットを扱う業務全般でmatchは力を発揮します。
注意点と失敗事例
matchを使うときの注意点は、ヒットしなかった場合にnull
が返ることです。これを考慮せずにコードを書くと、エラーで処理が止まってしまいます。
let result = text.match(/abc/);
if(result){
Logger.log(result[0]);
} else {
Logger.log("該当なし");
}
このように条件分岐を入れるのが安全です。ある企業では、このnull処理を怠ったため、定期的に自動集計が止まってしまい、管理者が夜中に手動で修正するトラブルが発生しました。
文字列の結合でデータをまとめる方法
なぜ文字列を結合するのか
「gas 文字列 結合」で調べる方は、複数のデータを一つにまとめたいシーンに直面しているはずです。例えば、姓と名を結合してフルネームを作る、住所データを結合して一つのセルに収めるなど、実務では文字列の結合は欠かせません。GASで自動化すれば、入力者ごとに形式が異なるデータをきれいに統一できます。
基本的な結合の方法
GASで文字列を結合する最もシンプルな方法は「+」を使う書き方です。
let firstName = "山田";
let lastName = "太郎";
let fullName = firstName + " " + lastName;
Logger.log(fullName); // 山田 太郎
また、テンプレートリテラル(バッククォート記号で囲む方法)を使えば、より読みやすく書けます。
let fullName = `${firstName} ${lastName}`;
実務での利用例
ある企業の人事部では、スプレッドシートに「姓」「名」が別々の列に入力されていました。名簿を作成するときにフルネームが必要となり、毎回手作業で結合していたのです。GASでスクリプトを組み、全行を自動的に結合してフルネーム列を生成するようにした結果、月に2時間以上の作業削減に成功しました。
注意点と失敗事例
結合の際に気をつけるのは「スペースや区切り文字の有無」です。例えば「山田太郎」と出てしまい、「山田 太郎」とならない場合があります。ある企業では、この区切り文字の抜けが原因で名簿の検索ができず、再作業を余儀なくされました。必ず意図したフォーマットで結合することが大切ですよ。
文字列を置換して修正する方法
置換の基本的な考え方
データの中には誤字や表記揺れがよくあります。これを自動で修正するのが「gas 文字列 置換」の目的です。例えば「株式会社」を「(株)」に直したり、メールアドレス中の全角「@」を半角に直すといった処理です。
置換の書き方
文字列置換にはreplace
メソッドを使います。
let text = "株式会社ロロント";
let result = text.replace("株式会社", "(株)");
Logger.log(result); // (株)ロロント
また、正規表現を組み合わせると複数箇所をまとめて置換できます。
let mail = "example@gmail.com";
let fixed = mail.replace(/@/g, "@");
Logger.log(fixed); // example@gmail.com
実務での利用例
経理部門でよくあるのが、振込データの表記ゆれです。取引先名が「ロロント株式会社」と「(株)ロロント」で混在していると、集計が正しく行えません。これをGASで一括置換するスクリプトを作り、常に統一された社名で管理するようにした事例があります。これにより、照合作業の時間が半分以下になりました。
注意点と失敗事例
置換を使う際に注意したいのは、意図しない部分まで置換してしまうケースです。例えば「株式会社東京」と「株式会社大阪」を「(株)」に置換したとき、「(株)東京」「(株)大阪」には問題ありませんが、もし「株式会社」という文字列が文章の一部に含まれていた場合も全部変わってしまいます。テストを重ね、必要に応じて正規表現で精度を高めましょう。
不要な文字列を削除する方法
削除の基本的な方法
「gas 文字列 削除」で検索する方の多くは、不要な記号や余分な改行を削りたいと考えています。削除は置換の応用で「空文字に変える」ことで実現できます。
let text = "商品名***限定";
let result = text.replace(/\*/g, "");
Logger.log(result); // 商品名限定
実務で役立つ削除処理
ある通販会社では、商品データを外部システムから取り込む際に余計な「タグ」や「改行」が混じっていました。そのままでは顧客に見せられないため、GASで自動的に削除する仕組みを作成。人手で数百件のデータを修正していた作業が、数秒で終わるようになりました。
注意点と失敗事例
削除処理は強力ですが、やりすぎると必要な情報まで失われます。実際にあった失敗例では、文章から「-」を削除する処理を組んだ結果、電話番号や日付の表記が崩れてしまいました。削除処理は必ず対象を限定して使うことが重要です。
特定の文字以降を抽出する方法
よくあるシーンと背景
「gas 特定の文字以降を抽出」は実務で特によく使われるパターンです。例えば「顧客番号: 12345」から数字部分だけを抜き出したい、URLのパラメータ部分だけを取り出したいといった場合です。
実装方法の例
特定の文字以降を抽出するにはindexOf
とsubstring
を組み合わせます。
let text = "顧客番号:12345";
let index = text.indexOf(":");
let result = text.substring(index + 1);
Logger.log(result); // 12345
実務での利用事例
マーケティング部門では、Googleフォームの回答に「ID=xxxxx」という文字列が含まれています。これをスプレッドシートに整理する際、毎回「=」以降だけを抜き出す作業が必要でした。GASで自動化した結果、1回あたり15分の作業が瞬時に完了するようになりました。
注意点と失敗事例
特定の文字が存在しない場合に-1
が返る点に注意が必要です。これを考慮せずにsubstringを使うと、意図しない結果になってしまいます。必ず「文字が存在するかどうか」を条件分岐で確認しましょう。
文字列の長さを扱う方法
長さを知ることの意味
「gas 文字列 長さ」は、入力制限やデータ整形のためによく使われます。例えば、商品コードは必ず10文字でなければならない、メール本文が200文字を超えていないか確認したいといったケースです。
長さを取得する方法
文字列の長さは.length
プロパティで簡単に取得できます。
let text = "ロロント株式会社";
Logger.log(text.length); // 8
実務での利用例
あるコールセンターでは、顧客対応履歴をスプレッドシートに保存しています。文字数が多すぎるとデータベース移行時にエラーが出るため、GASで文字数をチェックし、上限を超えた場合は自動で担当者に通知する仕組みを導入しました。これにより、システムエラーを未然に防げるようになりました。
注意点と失敗事例
文字列の長さを扱う際には「全角と半角の違い」に気をつける必要があります。日本語の全角文字は1文字でも実際には2バイトとして扱われる場合があり、外部システム連携時にトラブルになることがあります。そのため、バイト数と文字数を区別して処理を設計することが重要です。
まとめ
GASを使った文字列処理は、ビジネス現場での作業効率を大きく変えます。
- 基本的な切り出しは
substring
やslice
で対応できる - 正規表現を使えば複雑なパターン抽出も可能
- matchで特定の文字列を抜き出し、結合や置換で整形できる
- 不要な文字列削除や特定の文字以降抽出もよく使う処理
- 文字列の長さを確認することで入力制限やシステム連携も安全に行える
文字列操作を手作業で行うと数時間かかる処理が、GASを導入すれば数秒で終わります。日常的な業務に組み込むことで、作業の正確性とスピードが向上し、チーム全体の生産性も上がります。ぜひ、この記事で紹介した方法を一つずつ試し、業務に取り入れてみてください。