スキップしてメイン コンテンツに移動

GASで正規表現マスター

GASで正規表現マスター

GASで正規表現を使った文字列抽出

Google Apps Script(GAS)で文字列を扱う際、正規表現は欠かせないツールです。RegExpオブジェクトを生成し、matchexecメソッドでパターンマッチを行うことで、メールアドレスやURL、日付などを簡単に抽出できます。以下は、メールアドレスを抽出するサンプルです。

function extractEmails(text) {
  const emailPattern = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/g;
  return text.match(emailPattern) || [];
}

このコードは、testメソッドを使って文字列にメールアドレスが含まれているかを確認し、execで詳細情報を取得することも可能です。GAS実践では、スプレッドシートのセルから取得したデータに対して同様の処理を行い、抽出結果を別シートに書き込むといったワークフローがよく使われます。

バリデーションとパターンマッチの実践

入力データのバリデーションは、正規表現のもう一つの重要な用途です。例えば、電話番号の形式チェックや、パスワードの強度判定などが挙げられます。以下は、10桁の電話番号を検証する例です。

function isValidPhone(number) {
  const phonePattern = /^\\d{10}$/;
  return phonePattern.test(number);
}

testメソッドは真偽値を返すため、条件分岐で簡単にバリデーション結果を扱えます。さらに、execを使えば、マッチした部分を配列で取得し、詳細な情報をログに残すこともできます。GASでは、フォーム送信時にこのようなバリデーションを実装し、エラーがあればユーザーにフィードバックを返す仕組みを構築します。

高度な置換テクニック

正規表現を使った置換は、文字列の整形やデータクレンジングに不可欠です。String.prototype.replaceメソッドとRegExpを組み合わせることで、複雑なパターンを一括で置換できます。例えば、HTMLタグを除去したり、連続する空白を単一のスペースに統一したりするケースです。

function cleanText(text) {
  // HTMLタグを削除
  let cleaned = text.replace(/<[^>]+>/g, '');
  // 連続空白を1つに
  cleaned = cleaned.replace(/\\s+/g, ' ');
  return cleaned.trim();
}

さらに高度な置換では、replaceの第二引数に関数を渡すことで、マッチした部分ごとに動的に置換文字列を生成できます。例えば、日付形式をYYYY/MM/DDからDD-MM-YYYYに変換する場合、以下のように実装します。

function reformatDate(dateStr) {
  const datePattern = /(\\d{4})-(\\d{2})-(\\d{2})/;
  return dateStr.replace(datePattern, (match, y, m, d) => `${d}-${m}-${y}`);
}

GAS実践では、スプレッドシートのデータを一括で整形し、レポート作成やメール送信前の前処理に活用します。正規表現のパターンマッチと高度な置換を組み合わせることで、データ処理の効率と精度を大幅に向上させることができます。

この記事はAIによって作成されました。

コメント