
GASでスプレッドシートのデータを自由自在に!条件付き抽出の基本から応用まで、コード例付きで徹底解説します。
GASで条件付きデータ抽出(フィルター)の基本
Google Apps Script(GAS)を使って、スプレッドシートから特定の条件を満たすデータを抽出する方法を解説します。GASは、スプレッドシートのデータを操作する強力なツールであり、条件付き抽出(フィルター処理)は、データ分析やレポート作成において非常に重要なテクニックです。
この記事では、基本的な抽出方法から、複数の条件を組み合わせた応用的な抽出まで、具体的なコード例を交えながらわかりやすく解説します。GAS初心者の方でも、この記事を読めば、スプレッドシートのデータを自由自在に操れるようになるでしょう。
まずは、GASエディタを開いて、スクリプトを作成する準備をしましょう。スプレッドシートを開き、「ツール」→「スクリプトエディタ」を選択すると、GASエディタが開きます。ここに、これから紹介するコードを記述していきます。
GASでスプレッドシートを扱うには、まずスプレッドシートとシートを取得する必要があります。以下のコードは、アクティブなスプレッドシートの最初(index:1)のシートを取得する基本的な例です。
function getSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
return sheet;
}
基本的な条件抽出:特定の値との比較
最も基本的な条件抽出は、特定の値と一致するデータを抽出することです。例えば、ある列の値が特定の値と等しい行だけを抽出したい場合などに使用します。
以下のコードは、A列の値が「東京」である行を抽出する例です。このコードでは、まずシートのすべてのデータを取得し、ループ処理で各行のA列の値が「東京」であるかをチェックしています。条件に一致する行は、results配列に追加され、最後にログに出力されます。
function filterByValue() {
var sheet = getSheet();
var data = sheet.getDataRange().getValues();
var results = [];
for (var i = 1; i < data.length; i++) { // ヘッダー行をスキップ
var row = data[i];
if (row[0] === '東京') { // A列の値が「東京」の場合
results.push(row);
}
}
Logger.log(results);
}
上記のコードでは、data[i][0]
がA列の値を参照しています。data[i][1]
はB列、data[i][2]
はC列というように、インデックス番号で列を指定できます。===
は厳密等価演算子であり、値と型が一致する場合にtrueを返します。
このコードを実行すると、A列の値が「東京」である行のデータがログに表示されます。Logger.log()
は、GASのログ出力に使用される関数です。ログは、GASエディタの「表示」→「ログ」で確認できます。
複数の条件を組み合わせた抽出
より複雑な条件で抽出を行うには、複数の条件を組み合わせる必要があります。例えば、「A列の値が『東京』かつB列の値が『30』以上」といった条件でデータを抽出したい場合などです。
以下のコードは、A列の値が「東京」かつB列の値が30以上の行を抽出する例です。&&
は論理積演算子であり、両方の条件がtrueの場合にtrueを返します。
function filterByMultipleConditions() {
var sheet = getSheet();
var data = sheet.getDataRange().getValues();
var results = [];
for (var i = 1; i < data.length; i++) { // ヘッダー行をスキップ
var row = data[i];
if (row[0] === '東京' && row[1] >= 30) { // A列が「東京」かつB列が30以上の場合
results.push(row);
}
}
Logger.log(results);
}
このコードでは、row[1] >= 30
がB列の値が30以上であるかをチェックしています。>=
は以上演算子であり、左辺が右辺以上の場合にtrueを返します。
このように、&&
や||
(論理和演算子)などの論理演算子を組み合わせることで、複雑な条件を表現できます。必要に応じて、これらの演算子を使いこなして、様々な条件抽出を試してみてください。
抽出したデータの書き出し
抽出したデータを別のシートに書き出すことも可能です。これは、元のデータを変更せずに、必要なデータだけを別の場所で利用したい場合に便利です。
以下のコードは、抽出したデータを新しいシートに書き出す例です。まず、新しいシートを作成し、そこに抽出したデータを書き込みます。
function outputFilteredData() {
var sheet = getSheet();
var data = sheet.getDataRange().getValues();
var results = [];
for (var i = 1; i < data.length; i++) { // ヘッダー行をスキップ
var row = data[i];
if (row[0] === '東京' && row[1] >= 30) { // A列が「東京」かつB列が30以上の場合
results.push(row);
}
}
// 新しいシートを作成
var ss = SpreadsheetApp.getActiveSpreadsheet();
var newSheet = ss.insertSheet('FilteredData');
// ヘッダー行を書き込み
newSheet.appendRow(data[0]);
// 抽出したデータを書き込み
newSheet.getRange(2, 1, results.length, results[0].length).setValues(results);
Logger.log('データの書き出しが完了しました。');
}
このコードでは、ss.insertSheet('FilteredData')
で新しいシートを作成しています。newSheet.appendRow(data[0])
でヘッダー行を書き込み、newSheet.getRange(2, 1, results.length, results[0].length).setValues(results)
で抽出したデータを書き込んでいます。
getRange()
メソッドは、書き込む範囲を指定するために使用されます。最初の引数は開始行、2番目の引数は開始列、3番目の引数は行数、4番目の引数は列数を指定します。setValues()
メソッドは、指定された範囲にデータを書き込むために使用されます。
参考リンク
まとめ
GASを使った条件付きデータ抽出は、スプレッドシートのデータを効率的に処理するための強力な手段です。基本的な抽出から複数の条件を組み合わせた抽出、そして抽出したデータの書き出しまで、様々な方法を習得することで、データ分析の幅が大きく広がります。
この記事で紹介したコード例を参考に、ぜひ色々な条件で抽出を試してみてください。GASを使いこなして、スプレッドシートのデータを最大限に活用しましょう。