GASでスプレッドシートの指定範囲にフィルタを作成する方法

Google Apps Script(GAS)を使えば、スプレッドシートのフィルタを自動化できるっちゃ!今回は、createFilter()メソッドを使って、基本的なフィルタの作成から、動的フィルタ、複合条件フィルタまでバッチリ解説するけん、最後まで読んでみてな。


スポンサーリンク

1. フィルタの基本操作

まず、GASでスプレッドシートのフィルタを作成する基本のコードを見てみるばい。

function basicFilterCreation() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('SalesData');
  const dataRange = sheet.getRange('A1:D100');
  const newFilter = dataRange.createFilter();
}

このコードでは、A1:D100の範囲にフィルタを設定しとる。シンプルやけど、これだけでもデータ管理が便利になるばい!


2. 既存フィルタを削除して安全に作成する

フィルタを作成する前に、すでにフィルタがあるかチェックして、重複を防ぐのが大事じゃ。

function safeFilterCreation() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange();
  
  // 既存フィルタチェック
  const existingFilter = range.getFilter();
  if (existingFilter) {
    existingFilter.remove();
  }
  
  // 新規フィルタ作成
  const newFilter = range.createFilter();
}

これを使えば、二重フィルタの心配なし!


3. データ範囲を動的に設定する

データの行数が増えたり減ったりする場合、getDataRange()を使えば、最新のデータ範囲にフィルタを適用できるけん便利ばい!

function dynamicRangeFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  dataRange.createFilter();
}

これで新しいデータが追加されても、ちゃんとフィルタが適用されるとさ。


4. 特定の列にフィルタ条件を設定する

setColumnFilterCriteria()メソッドを使えば、特定の列だけフィルタリングできるとよ。

function columnSpecificFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const filter = sheet.getFilter();
  
  const criteria = SpreadsheetApp.newFilterCriteria()
    .setHiddenValues(['Inactive', 'Pending'])
    .build();
  
  filter.setColumnFilterCriteria(2, criteria); // B列に適用
}

B列のデータで「Inactive」「Pending」を非表示にするフィルタばい!


5. 複数の条件を組み合わせる

複数の列にフィルタをかける場合は、各列ごとに設定すればOK!

function multiColumnFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const filter = sheet.getFilter();
  
  // 売上高が1000未満
  const salesCriteria = SpreadsheetApp.newFilterCriteria()
    .whenNumberLessThan(1000)
    .build();
  
  // 地域が「West」
  const regionCriteria = SpreadsheetApp.newFilterCriteria()
    .setVisibleValues(['West'])
    .build();
  
  filter.setColumnFilterCriteria(3, salesCriteria); // C列(売上高)
  filter.setColumnFilterCriteria(4, regionCriteria); // D列(地域)
}

これで「売上1000未満」かつ「地域がWest」のデータだけ表示できるとさ!


6. フィルタの状態を監査・記録する

フィルタの設定を変更した履歴を記録しておくのもアリじゃ。

function logFilterChanges() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const filter = sheet.getFilter();
  
  const logSheet = ss.getSheetByName('FilterLog') || ss.insertSheet('FilterLog');
  const logData = [
    new Date(),
    sheet.getName(),
    JSON.stringify(filter.getColumnFilterCriteria(2))
  ];
  
  logSheet.appendRow(logData);
}

これを実行すれば、「いつ・どのシートで・どんなフィルタが適用されたか」を記録できるけん、管理が楽になるばい!


まとめ

GASのcreateFilter()メソッドを使えば、スプレッドシートのデータ管理がめちゃくちゃ便利になるっちゃ!

  • 基本のフィルタ作成createFilter()を使えば簡単
  • 安全なフィルタ操作 → 既存フィルタを削除してから作成
  • 動的範囲の設定getDataRange()でデータ増減に対応
  • 特定列のフィルタsetColumnFilterCriteria()で細かい条件設定
  • 複数条件の適用 → 複数列のフィルタを組み合わせる
  • フィルタ履歴の記録logFilterChanges()で監査可能

業務効率化の第一歩として、GASを活用してみるばい!


コメント

タイトルとURLをコピーしました