1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASでフィルターを自動操作!getFilter()でデータ絞り込みを効率化する方法

GASでフィルターを自動操作!getFilter()でデータ絞り込みを効率化する方法

GASでフィルターを自動操作!getFilter()でデータ絞り込みを効率化する方法

スプレッドシートで大量のデータを扱う際、「特定の条件で絞り込んで表示する」フィルター機能は欠かせません。しかし、毎日同じ条件でフィルターをかけ直したり、データが追加されるたびに範囲を再設定したりするのは、地味に面倒な作業です。

Google Apps Script (GAS) の getFilter() メソッドを使えば、こうしたフィルター操作を完全に自動化できます。

この記事では、getFilter() の基本から、既存フィルターの更新や、スクリプト実行時に特定の条件で自動的にデータを絞り込む応用テクニックまで、分かりやすく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

getFilter() の基本 - シートにフィルターが存在するか確認する

getFilter() は、シートに適用されている Filter オブジェクトを取得するためのメソッドです。フィルターが存在すればそのオブジェクトを、存在しなければ null を返します。

これを利用して、まずはシートにフィルターが設定されているかをチェックするのが基本の第一歩です。

function checkFilterExists() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // シートに設定されているフィルターを取得
  const filter = sheet.getFilter();

  if (filter) {
    const rangeA1 = filter.getRange().getA1Notation();
    console.log(`このシートにはフィルターが適用されています。範囲: ${rangeA1}`);
  } else {
    console.log("このシートにフィルターは適用されていません。");
  }
}

ポイント: sheet.getFilter() を使うと、シート全体のフィルターを簡単に取得できます。特定の範囲にフィルターがあるか調べたい場合は range.getFilter() を使います。

実践!フィルターをGASで操作する主要パターン

1. フィルターを「リフレッシュ」する (削除 & 再作成)

元データの行数や列数が変わった際に、フィルターの適用範囲を最新の状態に更新したいケースは頻繁にあります。そんな時は、一度フィルターを削除してから、現在のデータ範囲全体に再作成するのが最も確実です。

function refreshFilterRange() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // 最新のデータ範囲を取得 (例: A1からデータがある最後のセルまで)
  const dataRange = sheet.getDataRange();
  
  // 既存のフィルターが存在すれば、まず削除する
  const currentFilter = sheet.getFilter();
  if (currentFilter) {
    currentFilter.remove();
  }

  // 最新のデータ範囲に対して新しいフィルターを作成
  dataRange.createFilter();
  console.log(`フィルターを範囲 ${dataRange.getA1Notation()} で更新しました。`);
}

このスクリプトをトリガーで定期実行すれば、データが変動しても常に最適な範囲にフィルターが適用された状態を保てます。

2. フィルターの「絞り込み条件」を動的に設定する

getFilter() の真骨頂は、特定の条件でデータを自動的に絞り込む処理です。例えば、「ステータスが“完了”のものだけ表示する」「今日の日付のデータだけ表示する」といった操作をスクリプトで実現できます。

▼ 1列目(A列)が「重要」という文字を含む行だけを表示する例

function applyDynamicFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  
  // シートのフィルターを取得。なければデータ範囲全体に新規作成する
  const filter = sheet.getFilter() || sheet.getDataRange().createFilter();

  // 絞り込み条件(FilterCriteria)を作成
  const criteria = SpreadsheetApp.newFilterCriteria()
    .whenTextContains("重要") // テキストに「重要」が含まれる
    .build();

  // 1列目(A列)にフィルター条件をセット
  // この命令で、実際のシート上の表示が絞り込まれる
  filter.setColumnFilterCriteria(1, criteria);
  
  console.log("1列目を「重要」で絞り込みました。");
}

newFilterCriteria() ビルダーを使えば、whenNumberGreaterThan(100)(数値が100より大きい)や whenDateEqualTo(new Date())(今日の日付)など、様々な条件を柔軟に組み立てることが可能です。

3. すべての絞り込み条件をクリアする

設定されているフィルターの絞り込み条件をすべてリセットし、全データを表示状態に戻したい場合は、removeColumnFilterCriteria() を使います。

function clearAllFilterCriteria() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const filter = sheet.getFilter();

  if (filter) {
    const range = filter.getRange();
    // フィルター範囲のすべての列に対してループ
    for (let i = 1; i <= range.getNumColumns(); i++) {
      // 各列の絞り込み条件を削除
      filter.removeColumnFilterCriteria(i);
    }
    console.log("すべてのフィルター条件をクリアしました。");
  }
}

まとめ

getFilter() と関連メソッドを使えば、手作業で行っていた面倒なフィルター操作をGASで自動化し、業務効率を大幅に向上させることができます。

  • sheet.getFilter() でフィルターの有無や範囲を簡単に確認できる。
  • remove()createFilter() の組み合わせで、フィルター範囲を常に最新に保てる。
  • setColumnFilterCriteria() を使えば、特定の条件でのデータ絞り込みを自動化できる。

これらのテクニックを駆使して、日々のデータチェックやレポート作成業務をよりスマートなものにしていきましょう。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Class Filter | Apps Script | Google for Developers

関連記事

GASでシートに隠し情報を埋め込む!getDeveloperMetadata活用術

GASでシートに隠し情報を埋め込む!getDeveloperMetadata活用術

Google Apps Script (GAS) でスプレッドシートを操作する際、「スクリプト用の設定値をどこに保存しよう?」「この行に対応するデータベースのIDをどこかに持っておきたい」と悩んだことはありませんか? セルに直接書き込むとユーザーに見えてしまうし、間違って消されるリスクもあります。

そんな時に役立つのが「開発者メタデータ (Developer Metadata)」です。

これは、スプレッドシートの裏側に、スクリプト専用の「隠し情報」を安全に埋め込むための機能です。この記事では、getDeveloperMetadata() メソッドを中心に、メタデータの基本からセキュリティ、パフォーマンスまでを徹底解説します。

GAS getDataValidations()で入力規則を一括操作!業務自動化テクニック

GAS getDataValidations()で入力規則を一括操作!業務自動化テクニック

スプレッドシートで多数のセルに入力規則を設定していると、「一部のルールだけ一括で変更したい」「設定をバックアップしておきたい」といったニーズが出てきます。しかし、これらを手作業で行うのは非常に面倒で、ミスも起こりがちです。

そんな課題を解決するのが、Google Apps Script (GAS) の getDataValidations() メソッドです。

このメソッドを使えば、指定した範囲の入力規則をまとめて取得し、プログラムで効率的に操作できます。この記事では、getDataValidations() の基本から、設定の一括更新やバックアップといった実践的な自動化テクニックまで、詳しく解説します。