GASを使ってGoogleスプレッドシートを検索する方法

Google Apps Script (GAS)を使えば様々なGoogleのサービスを自動化することができます。スプレッドシート上のデータを元に何かを処理したい場合、まずは条件に一致したデータを取得する必要があります。

本記事では、GASを使ってGoogleスプレッドシート上のデータを検索する方法を紹介します。

スプレッドシート検索の手順

全体的な流れとしては、以下のようになると思います。

  1. Apps Script (GAS) とGoogleスプレッドシートの連携
  2. スプレッドシート・データ範囲の取得
  3. 条件に一致するものを検索

GASとスプレッドシートの連携に関しては、こちらの記事をご参照ください。

スプレッドシート・データ範囲の取得

検索をする前に、まずはデータを取得する必要があります。以下に、そのための基本的な関数を紹介します。

//GoogleスプレッドシートをIDで取得
var spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
//Googleスプレッドシートをシート名で取得
var sheet = spreadsheet.getSheetByName('シート名');

//Googleスプレッドシートのセル範囲を取得
var range = sheet.getDataRange();
//Googleスプレッドシートのセル範囲のデータを取得
var values = range.getValues();

データ取得方法のさらに詳しい方法は、こちらのページをご覧ください。

条件に一致するものを検索

最もシンプルな方法は、取得したデータをループで一つ一つ取り出し、条件に合致したものを探すという手法です。

for (var i = 0; i < values.length; i++) {
  for (var j = 0; j < values[i].length; j++) {
    if (values[i][j] == '検索条件') {
            //以下に、'検索条件'が見つかった場合の処理を記述。例えば、検索条件の値をログに主力
      Logger.log('見つかった値: ' + values[i][j]);
            //検索条件の行と列の番号を取得
      Logger.log('行: ' + (i+1) + ', 列: ' + (j+1));
    }
  }
}

また、SQLに似たクエリ言語がサポートされているので、以下のようにQUERY関数を用いて検索を行うこともできます。

var queryString = '=QUERY(A1:C10, "select * where B = \'条件\'", 1)';
sheet.getRange('E1').setFormula(queryString);

さらに、JavaScriptで正規表現を扱うためのオブジェクト、RegExp()を用いた検索方法もご紹介します。

var regex = new RegExp('検索パターン');
for (var i = 0; i < values.length; i++) {
  if (regex.test(values[i][0])) { // 例として1列目の値に対して検証
    Logger.log('見つかった行: ' + (i+1));
  }
}

上部へスクロール