GASでIPアドレスか否かを正規表現を使って判定する方法

こんにちは、ぬいぐるみです。

今回はGAS(Google Apps Script)で正規表現を使ってIF文の判定を行う方法について書いていきます。

正規表現で判定できるものならIPアドレス以外にも使えます。

自分でも苦労したので備忘録がてら……。

テストでこんな感じのシートを用意しておきます。

A列に入力されている値を確認して、IPアドレスだったらB列に○を入れるサンプルスクリプトを作っていきます。

ソースコード

  1. //IPアドレスの正規表現
  2. let regex = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/;
  3. function myFunction() {
  4.   const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  5.   let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  6.   // 値を取得する
  7.   const values = range.getValues();
  8.   //配列に入れた値をfor文で繰り返す
  9.   for (let i = 0; i < values.length; i++) {
  10.     //1行目の正規表現を使って判定
  11.     if(values[i].toString().match(regex) != null ){
  12.       sheet.getRange(i+1, 2).setValue(“○”);
  13.     }
  14.   }
  15. }

ポイント

values(シートの範囲を配列に入れたもの)は配列なので0から始まります。

つまりvalues[0]にはセルA1の値が入っています。

values[0]……セルA1

values[1]……セルA2

values[2]……セルA3

そのため、15行目ではiに1プラスしてシート側に合わせています。

15行目では「regex内の正規表現を判定して、nullじゃなかったら(正規表現と一致してたら)丸つけてね」というif文です。

valuesは型がobjectであり、matchはString型にしか使えないので、toStringを使ってobject型からString型に変更してあげています。

余談ですが、ここでtoStringをつけないと「TypeError: values[i].match is not a functionというエラーが出ます。お気をつけて。(3敗)

無事にIPアドレスのみに丸がつけられました。

参考

IPアドレスの正規表現

応援
応援ポチっとよろしくです。 ブログランキング・にほんブログ村へ
スポンサーリンク
広告




広告




★役に立った!と思ったらシェアをお願いします。★

  • このエントリーをはてなブックマークに追加

★フォローはこちら★

スポンサーリンク
広告




コメントをどうぞ

メールアドレスが公開されることはありません。