Google Apps Script (GAS)を使えば様々なGoogleのサービスを自動化することができます。スプレッドシート上のデータを元に何かを処理したい場合、まずは条件に一致したデータを取得する必要があります。
本記事では、GASを使ってGoogleスプレッドシート上のデータを検索する方法を紹介します。
スプレッドシート検索の手順
全体的な流れとしては、以下のようになると思います。
- Apps Script (GAS) とGoogleスプレッドシートの連携
- スプレッドシート・データ範囲の取得
- 条件に一致するものを検索
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));
}
}