1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASでスプレッドシートにフィルターを自動作成・操作する方法

GASでスプレッドシートにフィルターを自動作成・操作する方法

GASでスプレッドシートにフィルターを自動作成・操作する方法

Google Apps Script(GAS)を利用すれば、スプレッドシートのフィルター操作を自動化し、データ管理を大幅に効率化できます。今回は、createFilter()メソッドを中心に、基本的なフィルターの作成から、動的な範囲設定、複数条件の組み合わせといった応用テクニックまでを詳しく解説します。

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

1. フィルターを新規作成する基本

まず、GASを使ってスプレッドシートの特定範囲にフィルターを作成する基本的なコードを紹介します。

function createBasicFilter() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('データシート');
  
  // A1:D100の範囲にフィルターを作成
  const dataRange = sheet.getRange('A1:D100');
  const newFilter = dataRange.createFilter();
}

このコードを実行するだけで、指定したA1:D100の範囲にフィルターが設定されます。非常にシンプルですが、データ管理の第一歩として重要です。

2. 既存のフィルターを安全に削除・再作成する

スクリプトを繰り返し実行する際、フィルターが重複して作成されるのを防ぐため、既存のフィルターを一度削除してから新規作成するのが安全です。

function createFilterSafely() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange();
  
  // 範囲内に既存のフィルターがあれば削除
  const existingFilter = range.getFilter();
  if (existingFilter) {
    existingFilter.remove();
  }
  
  // 新しいフィルターを作成
  const newFilter = range.createFilter();
}

この処理を組み込むことで、エラーを防ぎ、常に新しい状態のフィルターを適用できます。

3. データ範囲を動的に取得してフィルターを設定する

データの行数が変動する場合、範囲を固定で指定すると新しいデータにフィルターが適用されない可能性があります。getDataRange()を使えば、現在のデータが存在する範囲全体を自動で取得できます。

function createFilterForDynamicRange() {
  const sheet = SpreadsheetApp.getActiveSheet();
  
  // データが存在する範囲全体を自動で取得
  const dataRange = sheet.getDataRange();
  dataRange.createFilter();
}

これにより、データの増減に柔軟に対応できる、より実用的なスクリプトになります。

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

setColumnFilterCriteria()メソッドを使用すると、特定の列に対して表示・非表示の条件を指定できます。

function setColumnFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const filter = sheet.getFilter();
  
  // 非表示にする値を指定するフィルター条件を作成
  const criteria = SpreadsheetApp.newFilterCriteria()
    .setHiddenValues(['対応完了', '保留'])
    .build();
  
  // 2列目(B列)にフィルター条件を適用
  filter.setColumnFilterCriteria(2, criteria);
}

この例では、2列目の値が「対応完了」または「保留」の行を非表示にしています。

5. 複数列にまたがる複雑なフィルター条件を設定する

複数の列に対して、それぞれ異なるフィルター条件を組み合わせることも可能です。

function setMultiColumnFilter() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const filter = sheet.getFilter();
  
  // 条件1: 売上高が1000未満
  const salesCriteria = SpreadsheetApp.newFilterCriteria()
    .whenNumberLessThan(1000)
    .build();
  
  // 条件2: 地域が「関東」
  const regionCriteria = SpreadsheetApp.newFilterCriteria()
    .setVisibleValues(['関東'])
    .build();
  
  // 各列にフィルターを適用
  filter.setColumnFilterCriteria(3, salesCriteria); // 3列目(売上高)
  filter.setColumnFilterCriteria(4, regionCriteria); // 4列目(地域)
}

これにより、「売上高が1000未満」かつ「地域が関東」という複合条件でのデータ抽出が自動化できます。

6. 【応用】フィルターの変更履歴を記録する

誰がいつ、どのようなフィルターをかけたのかを記録しておくと、データ管理の透明性が向上します。

function logFilterChanges() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const filter = sheet.getFilter();
  
  const logSheet = ss.getSheetByName('フィルター操作ログ') || ss.insertSheet('フィルター操作ログ');
  const logData = [
    new Date(), // タイムスタンプ
    sheet.getName(), // 対象シート名
    JSON.stringify(filter.getColumnFilterCriteria(2)) // 2列目のフィルター条件
  ];
  
  logSheet.appendRow(logData);
}

この関数を実行することで、フィルターの変更履歴を別のシートに記録できます。

まとめ

GASのcreateFilter()関連のメソッドを使いこなすことで、スプレッドシートのデータ管理を大幅に自動化・効率化できます。

  • 基本的なフィルター作成: createFilter()で簡単に実現。
  • 安全なフィルター操作: 既存フィルターの削除を組み合わせる。
  • 動的な範囲設定: getDataRange()でデータの増減に対応。
  • 詳細な条件設定: setColumnFilterCriteria()で特定の列を絞り込み。
  • 複合条件の適用: 複数列のフィルターを組み合わせる。

これらの機能を活用し、日々の定型業務を効率化させましょう。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
スプレッドシートの個人フィルタをGoogle Apps Scriptで作成する方法 - Qiita

はじめに Googleのスプレッドシートでフィルタを個人で作成してもらう運用をしていると、 フィルタ1などよくわからないフィルタが増えすぎて困ることってよくありますよね。 なので最初からある程度グループなどでまとめたフィルタを作っておいてそれぞれそれを利用してもらえば、 ...

Class Filter | Apps Script | Google for Developers

[GAS]filterメソッドを用い条件に合ったデータを別シートに転記|カワムラ

恥ずかしながらGoogle Apps Scriptの反復メソッドがまだ理解できておりません。 アロー関数もなにそれ?というレベルです。 ようやく「あ、このパターンは実務でよく使いそうだな」と思ったケースが見つかったのでメモします。 下記のような売上額データがあるとします。 列C「事業所」を参照し、「東京本社」のデータのみを抽出して 予め用意した別シート「売上額データ_東京本社」に転記したい、とします。 (列の構造は売上額データと同一で空のシート) スクリプトはこちら。 function filter01() { const ss = Spreadsheet

関連記事

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

Google Apps Script (GAS) を使ってスプレッドシートを自動化する際、セルの**「テキスト折り返し設定」をプログラムで自在に制御する**ことは、データの視認性を高め、プロフェッショナルなシートレイアウトを維持するために不可欠です。本記事では、GASの主要メソッドであるgetWrap()getWraps()に焦点を当て、その基本的な使い方からSEOを意識した応用テクニックまで、徹底的に解説します。

この記事では、以下の疑問を解決します。