GASで正規表現マスター
GASで正規表現を使った文字列抽出
Google Apps Script(GAS)で文字列を扱う際、正規表現は欠かせないツールです。RegExpオブジェクトを生成し、matchやexecメソッドでパターンマッチを行うことで、メールアドレスや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実践では、スプレッドシートのデータを一括で整形し、レポート作成やメール送信前の前処理に活用します。正規表現のパターンマッチと高度な置換を組み合わせることで、データ処理の効率と精度を大幅に向上させることができます。
コメント
コメントを投稿