【GAS】スプレッドシートのフィルタ機能まとめ【サンプルソース付】

快速ワーク
スポンサーリンク

GAS開発者向けにスプレッドシートのフィルタ機能をすべてまとめました。

データを解析する時に頻繁にフィルタは頻繁に使いますね。スプレッドシートはExcelと操作が微妙に違うので慣れが必要です。

データのバリエーションが豊富なシートを作成した場合、簡単に条件を設定して絞り込めるようにしておけばきっとメチャクチャ便利です。

全部まとめたら随分と長くなってしまいましたが。。。自分に必要な条件に絞って参考にしてください。

フィルタに関するメソッドをすべて載せてます。少しでも参考になれば幸いです。


  1. Google Apps Script スプレッドシート 基礎 リファレンス
  2. セル範囲クラス[Range]のフィルター作成
    1. フィルター作成[createFilter()]
  3. セル範囲クラス[Range]のフィルタ取得
    1. フィルター取得[getFilter()]
  4. スプレッドシートAPPクラス[SpreadsheetApp]のフィルター基準作成
    1. フィルター基準作成[newFilterCriteria()]
  5. フィルタクラス[Filter]
    1. 指定列フィルタ条件取得[getColumnFilterCriteria(列の位置)]
    2. フィルタ適用範囲取得[getRange()]
    3. フィルタ削除[remove()]
    4. 指定列フィルタ条件削除[removeColumnFilterCriteria(列の位置)]
    5. 指定列フィルタ条件設定[setColumnFilterCriteria(列の位置, フィルタ基準)]
    6. フィルタ適用範囲ソート[sort(列の位置, 昇順)]
  6. フィルタ基準クラス[FilterCriteria]
  7. フィルタビルダークラス[FilterCriteriaBuilder]
    1. フィルタ構築[build()]
    2. フィルタコピー作成[copy()]
    3. フィルタ基準タイプ取得[getCriteriaType()]
    4. フィルタ基準値取得[getCriteriaValues()]
    5. フィルタ非表示値取得[getHiddenValues()]
    6. フィルタ表示値取得[getVisibleValues()]
    7. フィルタ非表示値設定[setHiddenValues(値's)]
    8. フィルタ表示値設定[setVisibleValues(値's)]
    9. 空白であるかの条件設定[whenCellEmpty()]
    10. 空白ではないかの条件設定[whenCellNotEmpty()]
    11. 指定日付より後かの条件設定1[whenDateAfter(日付)]
    12. 指定日付より後かの条件設定2[whenDateAfter(相対日付)]
    13. 指定日付より前かの条件設定1[whenDateBefore(日付)]
    14. 指定日付より前かの条件設定2[whenDateBefore(相対日付)]
    15. 指定日付と等しいかの条件設定1[whenDateEqualTo(日付)]
    16. 指定日付と等しいかの条件設定2[whenDateEqualTo(相対日付)]
    17. 指定式の条件設定[whenFormulaSatisfied(式)]
    18. 指定数値が2つの間にあるかの条件設定[whenNumberBetween(開始, 終了)]
    19. 指定数値と等しいかの条件設定[whenNumberEqualTo(数値)]
    20. 指定数値より大きいかの条件設定[whenNumberGreaterThan(数値)]
    21. 指定数値以上かの条件設定[whenNumberGreaterThanOrEqualTo(数値)]
    22. 指定数値より小さいかの条件設定[whenNumberLessThan(数値)]
    23. 指定数値以下かの条件設定[whenNumberLessThanOrEqualTo(数値)]
    24. 指定数値が2つの間にないかの条件設定[whenNumberNotBetween(開始, 終了)]
    25. 指定数値と等しくないかの条件設定1[whenNumberNotEqualTo(数値)]
    26. 指定値が含まれているかの条件設定[whenTextContains(テキスト)]
    27. 指定値が含まれていないかの条件設定[whenTextDoesNotContain(テキスト)]
    28. 指定値で終わるかの条件設定[whenTextEndsWith(テキスト)]
    29. 指定値と等しいかの条件設定[whenTextEqualTo(テキスト)]
    30. 指定値で始まるかの条件設定[whenTextStartsWith(テキスト)]
    31. 基準条件設定[withCriteria(条件, 引数)]
  8. ブール値基準列挙型[BooleanCriteria]
  9. 最後に

Google Apps Script スプレッドシート 基礎 リファレンス

当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。

若干、文言がおかしい可能性がありますが、あらかじめご了承ください。

 

GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。

【GAS】スプレッドシート基本メソッドまとめ一覧【初心者入門】
GAS開発者向けにスプレッドシートの基本的なメソッドを一覧にまとめました。各機能ごとのクラス、メソッドごとのサンプルソース付ページへリンクする一覧です。初心者にとって、スプレッドシートの基本的な操作・機能単位のメソッドを知...

 

まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。

【GAS】Googleスプレッドシートでマクロの使い方入門【動画付】
Googleの「Google Apps Script」通称GAS。GoogleマップやGメールなど、いろんなGoogle関連のサービスと自由に連携できたり、独自のWebアプリを開発することもできる、いろんな可能性を秘めたワクワクの...

 

GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。

基本的な仕様やよく使われる機能の設定方法がまとまっています。

※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。


セル範囲クラス[Range]のフィルター作成

セル範囲のフィルター作成メソッドです。

フィルター作成[createFilter()]

createFilter()
範囲に適用されるフィルタを作成します。シートには最大1つのフィルタを含めることができます。

function createFilterSample() {
  var sheet = SpreadsheetApp.getActiveSheet();

  // A1:B7のセル範囲にフィルター作成
  sheet.getRange(1,1,7,2).createFilter();
}

Return
Filter - 新しいフィルタ。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | createFilter()


セル範囲クラス[Range]のフィルタ取得

セル範囲のフィルター取得メソッドです。

フィルター取得[getFilter()]

getFilter()
この範囲が属するシートのフィルタを返します。シートにフィルタがない場合はnullを返します。

function getFilterSample() {
  var sheet = SpreadsheetApp.getActiveSheet();

  // フィルターを取得して削除
  sheet.getFilter().remove();
}

Return
Filter - フィルタ。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getFilter()




スプレッドシートAPPクラス[SpreadsheetApp]のフィルター基準作成

スプレッドシートAPPクラスのフィルター基準作成です。

フィルター基準作成[newFilterCriteria()]

newFilterCriteria()
FilterCriteriaのビルダーを作成します。

function newFilterCriteriaSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  
  // 'test1','test3'を非表示にするフィルター基準作成
  var criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['test1','test3'])
  .build();

  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}

Return
FilterCriteriaBuilder - 新しいビルダー。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class SpreadsheetApp | Methods | newFilterCriteria()


フィルタクラス[Filter]

既存のフィルタにアクセスして変更します。新しいフィルタを作成するには、Range.createFilter()を使用してください。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class RichTextValue

Methods
方法タイプ説明
getColumnFilterCriteria(columnPosition)FilterCriteria指定した列のフィルタ条件を取得します。フィルタ条件が設定されていない場合はnullを返します。
getRange()Rangeこのフィルタが適用される範囲を取得します。
remove()voidこのフィルタを削除します。
removeColumnFilterCriteria(columnPosition)Filter指定された列からフィルター基準を削除します。
setColumnFilterCriteria(columnPosition, filterCriteria)Filter指定した列にフィルタ条件を設定します。
sort(columnPosition, ascending)Filterこのフィルタが適用される範囲の最初の行(ヘッダ行)を除いて、指定された列でフィルタ処理された範囲をソートします。

指定列フィルタ条件取得[getColumnFilterCriteria(列の位置)]

getColumnFilterCriteria(columnPosition)
指定した列のフィルタ条件を取得します。フィルタ条件が設定されていない場合はnullを返します。

function getColumnFilterCriteriaSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var filter = sheet.getFilter();
  var criteria = filter.getColumnFilterCriteria(1);
  // 1列目のフィルタ条件を取得
  if(criteria != null){
    // フィルタ条件が設定されている場合は解除
    filter.removeColumnFilterCriteria(1)
  }
}
Parameters
名前タイプ説明
columnPositionInteger列の1から始まる位置。

Return
FilterCriteria - フィルタ条件。

フィルタ適用範囲取得[getRange()]

getRange()
このフィルタが適用される範囲を取得します。

function getRangeSample() {
  var sheet = SpreadsheetApp.getActiveSheet();

  var filter = sheet.getFilter();
  if(filter != null){
    var col = filter.getRange().getColumn();
    Logger.log(col);
  }
}

Return
Range - セル範囲。

フィルタ削除[remove()]

remove()
このフィルタを削除します。

指定列フィルタ条件削除[removeColumnFilterCriteria(列の位置)]

removeColumnFilterCriteria(columnPosition)
指定された列からフィルター基準を削除します。

Parameters
名前タイプ説明
columnPositionInteger列の1から始まる位置。

Return
Filter - 連鎖用のフィルタ。

指定列フィルタ条件設定[setColumnFilterCriteria(列の位置, フィルタ基準)]

setColumnFilterCriteria(columnPosition, filterCriteria)
指定した列にフィルタ条件を設定します。

Parameters
名前タイプ説明
columnPositionInteger列の1から始まる位置。
filterCriteriaFilterCriteria設定するフィルタ条件。 nullの場合、指定された列からフィルタ条件を削除します。あるいは、removeColumnFilterCriteria(columnPosition)を使用してください。

Return
Filter - 連鎖用のフィルタ。

フィルタ適用範囲ソート[sort(列の位置, 昇順)]

sort(columnPosition, ascending)
このフィルタが適用される範囲の最初の行(ヘッダ行)を除いて、指定された列でフィルタ処理された範囲をソートします。

function sort1Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();

  var filter = sheet.getFilter();
  if(filter != null){
    filterRange = filter.getRange();
    var col = filterRange.getColumn();
    filter.sort(col+1,false);
  }
}
function Sort2Sample() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  // フィルタの2列目で昇順に並べ替えます
  sheet.getFilter().sort(2, true);
  // フィルタの4列目で降順に並べ替えます
  sheet.getFilter().sort(4, false);
}
Parameters
名前タイプ説明
columnPositionInteger列の1から始まる位置。
ascendingBooleantrueの場合、フィルタリングされた範囲を昇順に並べ替えます。 falseの場合、フィルタリングされた範囲を降順に並べ替えます。

Return
Filter - 連鎖用のフィルタ。


フィルタ基準クラス[FilterCriteria]

フィルタ基準にアクセスします。新しい基準を作成するには、SpreadsheetApp.newFilterCriteria()とFilterCriteriaBuilderを使用してください。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class FilterCriteria

Methods
方法タイプ説明
copy()FilterCriteriaBuilderこのフィルター基準の設定に基づいてフィルター基準のビルダーを作成します。
getCriteriaType()BooleanCriteriaBooleanCriteria列挙体に定義されているブール基準タイプを返します。
getCriteriaValues()Object[]ブール基準の引数の配列を返します。
getHiddenValues()String[]非表示にする値を返します。
getVisibleValues()String[]表示する値を返します。



フィルタビルダークラス[FilterCriteriaBuilder]

FilterCriteriaのビルダー。

参照:Google Apps Script | REFERENCE | SpreadSheet | Class FilterCriteriaBuilder

Methods
方法タイプ説明
build()FilterCriteriaビルダーに提供された設定からフィルター基準を作成します。
copy()FilterCriteriaBuilderこのフィルター基準の設定に基づいてフィルター基準のビルダーを作成します。
getCriteriaType()BooleanCriteriaBooleanCriteria列挙体に定義されているブール基準タイプを返します。
getCriteriaValues()Object[]ブール基準の引数の配列を返します。
getHiddenValues()String[]非表示にする値を返します。
getVisibleValues()String[]表示する値を返します。
setHiddenValues(values)FilterCriteriaBuilder非表示にする値を設定します。
setVisibleValues(values)FilterCriteriaBuilder表示する値を設定します。
whenCellEmpty()FilterCriteriaBuilderセルが空のセルを表示するようにフィルタ条件を設定します。
whenCellNotEmpty()FilterCriteriaBuilderセルが空ではないセルを表示するようにフィルター基準を設定します。
whenDateAfter(date)FilterCriteriaBuilderセル日付が指定された値より後にあるセルを表示するようにフィルター基準を設定します。
whenDateAfter(relativeDate)FilterCriteriaBuilderセル日付が指定された相対日付より後のセルを表示するようにフィルター基準を設定します。
whenDateBefore(date)FilterCriteriaBuilderセルの日付が指定した日付より前のセルを表示するようにフィルター基準を設定します。
whenDateBefore(relativeDate)FilterCriteriaBuilderセル日付が指定された相対日付より前のセルを表示するようにフィルター基準を設定します。
whenDateEqualTo(date)FilterCriteriaBuilderセルの日付が指定された日付と等しいセルを表示するようにフィルター基準を設定します。
whenDateEqualTo(relativeDate)FilterCriteriaBuilderセル日付が指定された相対日付と等しいセルを表示するようにフィルター基準を設定します。
whenFormulaSatisfied(formula)FilterCriteriaBuilder指定した式(=B:B<C:Cなど)がtrueと評価されるセルを表示するようにフィルター基準を設定します。
whenNumberBetween(start, end)FilterCriteriaBuilderセル番号が指定された2つの番号の間にあるか、そのいずれかであるセルを表示するようにフィルター基準を設定します。
whenNumberEqualTo(number)FilterCriteriaBuilderセル番号が指定された値と等しいセルを表示するようにフィルター基準を設定します。
whenNumberGreaterThan(number)FilterCriteriaBuilderセル番号が指定された値より大きいセルを表示するようにフィルター基準を設定します。
whenNumberGreaterThanOrEqualTo(number)FilterCriteriaBuilderセル番号が指定された値以上のセルを表示するようにフィルター基準を設定します。
whenNumberLessThan(number)FilterCriteriaBuilderセル番号が指定された値より小さいセルを表示するように条件付き条件付き書式規則を設定します。
whenNumberLessThanOrEqualTo(number)FilterCriteriaBuilderセル番号が指定された値以下であるセルを表示するようにフィルター基準を設定します。
whenNumberNotBetween(start, end)FilterCriteriaBuilderセル番号が2つの指定された番号の間になく、またどちらでもないセルを表示するようにフィルター基準を設定します。
whenNumberNotEqualTo(number)FilterCriteriaBuilderセル番号が指定された値と等しくないセルを表示するようにフィルター基準を設定します。
whenTextContains(text)FilterCriteriaBuilder指定したテキストがセルテキストに含まれているセルを表示するようにフィルタ条件を設定します。
whenTextDoesNotContain(text)FilterCriteriaBuilder指定したテキストがセルテキストに含まれていないセルを表示するようにフィルタ条件を設定します。
whenTextEndsWith(text)FilterCriteriaBuilderセルテキストが指定されたテキストで終わる場所にセルを表示するようにフィルタ条件を設定します。
whenTextEqualTo(text)FilterCriteriaBuilderセルテキストが指定したテキストと等しいセルを表示するようにフィルタ条件を設定します。
whenTextStartsWith(text)FilterCriteriaBuilder指定したテキストでセルテキストが始まるセルを表示するようにフィルタ条件を設定します。
withCriteria(criteria, args)FilterCriteriaBuilderブール基準を、通常は既存の基準の基準と引数から取得したBooleanCriteria値で定義された基準に設定します。

フィルタ構築[build()]

build()
ビルダーに提供された設定からフィルター基準を作成します。

Return
FilterCriteria - フィルタ基準の表現。

フィルタコピー作成[copy()]

copy()
このフィルター基準の設定に基づいてフィルター基準のビルダーを作成します。

Return
FilterCriteriaBuilder - このフィルター基準に基づくフィルター基準ビルダー。

フィルタ基準タイプ取得[getCriteriaType()]

getCriteriaType()
BooleanCriteria列挙体に定義されているブール基準タイプを返します。基準の引数を取得するには、getCriteriaValues()を使用してください。これらの値を使用してフィルタ条件を作成または変更するには、withCriteria(criteria, args)を参照してください。

Return
BooleanCriteria - ブール基準のタイプ。

フィルタ基準値取得[getCriteriaValues()]

getCriteriaValues()
ブール基準の引数の配列を返します。ブール基準タイプを取得するには、getCriteriaType()を使用してください。これらの値を使用してフィルタ条件を作成または変更するには、withCriteria(criteria, args)を参照してください。

Return
Object[] - ブール基準型に適した引数の配列。引数の数とその型は、FilterCriteriaBuilderクラスの対応するwhen...()メソッドと一致します。

フィルタ非表示値取得[getHiddenValues()]

getHiddenValues()
非表示にする値を返します。

Return
String[] - 非表示にする値の配列。

フィルタ表示値取得[getVisibleValues()]

getVisibleValues()
表示する値を返します。

Return
String[] - 表示する値の配列。

フィルタ非表示値設定[setHiddenValues(値's)]

setHiddenValues(values)
非表示にする値を設定します。既存の表示または非表示の値をクリアします。

Parameters
名前タイプ説明
valuesString[]非表示にする値の一覧。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

フィルタ表示値設定[setVisibleValues(値's)]

setVisibleValues(values)
表示する値を設定します。既存の表示または非表示の値をクリアします。

Parameters
名前タイプ説明
valuesString[]表示する値の一覧。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

空白であるかの条件設定[whenCellEmpty()]

whenCellEmpty()
セルが空のセルを表示するようにフィルタ条件を設定します。

function whenCellEmptySample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenCellEmpty()
                 .build();
  // 空白である値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

空白ではないかの条件設定[whenCellNotEmpty()]

whenCellNotEmpty()
セルが空ではないセルを表示するようにフィルター基準を設定します。

function whenCellNotEmptySample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenCellNotEmpty()
                 .build();
  // 空白ではない値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付より後かの条件設定1[whenDateAfter(日付)]

whenDateAfter(date)
セル日付が指定された値より後にあるセルを表示するようにフィルター基準を設定します。

function whenDateAfter1Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateAfter(new Date("11/4/1993"))
                 .build();
  // 指定日付より後の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateDate最新の日付。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付より後かの条件設定2[whenDateAfter(相対日付)]

whenDateAfter(relativeDate)
セル日付が指定された相対日付より後のセルを表示するようにフィルター基準を設定します。

function whenDateAfter2Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateAfter(SpreadsheetApp.RelativeDate.TODAY)
                 .build();
  // 指定相対日付より後の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateRelativeDate選択された日付タイプに対する最新の日付。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付より前かの条件設定1[whenDateBefore(日付)]

whenDateBefore(date)
セルの日付が指定した日付より前のセルを表示するようにフィルター基準を設定します。

function whenDateBefore1Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateBefore(new Date("11/4/1993"))
                 .build();
  // 指定日付より前の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateDate受け入れられない最も早い日付。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付より前かの条件設定2[whenDateBefore(相対日付)]

whenDateBefore(relativeDate)
セル日付が指定された相対日付より前のセルを表示するようにフィルター基準を設定します。

function whenDateBefore2Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateBefore(SpreadsheetApp.RelativeDate.TODAY)
                 .build();
  // 指定相対日付より前の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateRelativeDate選択された日付タイプに対する最新の日付。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付と等しいかの条件設定1[whenDateEqualTo(日付)]

whenDateEqualTo(date)
セルの日付が指定された日付と等しいセルを表示するようにフィルター基準を設定します。

function whenDateEqualTo1Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateEqualTo(new Date("11/4/1993"))
                 .build();
  // 指定日付と等しい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateDate唯一の許容日。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定日付と等しいかの条件設定2[whenDateEqualTo(相対日付)]

whenDateEqualTo(relativeDate)
セル日付が指定された相対日付と等しいセルを表示するようにフィルター基準を設定します。

function whenDateEqualTo2Sample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenDateEqualTo(SpreadsheetApp.RelativeDate.TODAY)
                 .build();
  // 指定相対日付と等しい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
dateRelativeDate選択された日付タイプに対する最新の日付。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定式の条件設定[whenFormulaSatisfied(式)]

whenFormulaSatisfied(formula)
指定した式(=B:B<C:Cなど)がtrueと評価されるセルを表示するようにフィルター基準を設定します。

function whenFormulaSatisfiedSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenFormulaSatisfied('=$B:$B=max(B:B)') // B列で一番大きい値
                 .build();
  // 指定式に一致する値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
formulaString入力が有効な場合にtrueと評価されるカスタム式。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値が2つの間にあるかの条件設定[whenNumberBetween(開始, 終了)]

whenNumberBetween(start, end)
セル番号が指定された2つの番号の間にあるか、そのいずれかであるセルを表示するようにフィルター基準を設定します。

function whenNumberBetweenSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberBetween(1, 10)
                 .build();
  // 指定数値が2つの間にある値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
startNumber許容される最小値。
endNumber許容可能な最大値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値と等しいかの条件設定[whenNumberEqualTo(数値)]

whenNumberEqualTo(number)
セル番号が指定された値と等しいセルを表示するようにフィルター基準を設定します。

function whenNumberEqualToSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberEqualTo(10)
                 .build();
  // 指定数値と等しい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber唯一の許容値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値より大きいかの条件設定[whenNumberGreaterThan(数値)]

whenNumberGreaterThan(number)
セル番号が指定された値より大きいセルを表示するようにフィルター基準を設定します。

function whenNumberGreaterThanSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberGreaterThan(10)
                 .build();
  // 指定数値より大きい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber許容できない最大値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値以上かの条件設定[whenNumberGreaterThanOrEqualTo(数値)]

whenNumberGreaterThanOrEqualTo(number)
セル番号が指定された値以上のセルを表示するようにフィルター基準を設定します。

function whenNumberGreaterThanOrEqualToSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberGreaterThanOrEqualTo(10)
                 .build();
  // 指定数値以上の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber許容される最小値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値より小さいかの条件設定[whenNumberLessThan(数値)]

whenNumberLessThan(number)
セル番号が指定された値より小さいセルを表示するように条件付き条件付き書式規則を設定します。

function whenNumberLessThanSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberLessThan(10)
                 .build();
  // 指定数値より小さい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber許容できない最小値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値以下かの条件設定[whenNumberLessThanOrEqualTo(数値)]

whenNumberLessThanOrEqualTo(number)
セル番号が指定された値以下であるセルを表示するようにフィルター基準を設定します。

function whenNumberLessThanOrEqualToSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberLessThanOrEqualTo(10)
                 .build();
  // 指定数値以下の値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber許容可能な最大値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値が2つの間にないかの条件設定[whenNumberNotBetween(開始, 終了)]

whenNumberNotBetween(start, end)
セル番号が2つの指定された番号の間になく、またどちらでもないセルを表示するようにフィルター基準を設定します。

function whenNumberNotBetweenSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberNotBetween(1, 10)
                 .build();
  // 指定数値が2つの間にない値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
startNumber許容できない最小値。
endNumber許容できない最大値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定数値と等しくないかの条件設定1[whenNumberNotEqualTo(数値)]

whenNumberNotEqualTo(number)
セル番号が指定された値と等しくないセルを表示するようにフィルター基準を設定します。

function whenNumberNotEqualToSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenNumberNotEqualTo(10)
                 .build();
  // 指定数値と等しくない値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
numberNumber唯一の受け入れられない値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定値が含まれているかの条件設定[whenTextContains(テキスト)]

whenTextContains(text)
指定したテキストがセルテキストに含まれているセルを表示するようにフィルタ条件を設定します。

function whenTextContainsSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenTextContains("hello")
                 .build();
  // 指定値が含まれている値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
textString入力に含まれている必要がある値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定値が含まれていないかの条件設定[whenTextDoesNotContain(テキスト)]

whenTextDoesNotContain(text)
指定したテキストがセルテキストに含まれていないセルを表示するようにフィルタ条件を設定します。

function whenTextDoesNotContainSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenTextDoesNotContain("hello")
                 .build();
  // 指定値が含まれていない値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
textString入力に含まれてはならない値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定値で終わるかの条件設定[whenTextEndsWith(テキスト)]

whenTextEndsWith(text)
セルテキストが指定されたテキストで終わる場所にセルを表示するようにフィルタ条件を設定します。

function whenTextEndsWithSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenTextEndsWith("hello")
                 .build();
  // 指定値で終わる値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
textString文字列の末尾と比較するテキストです。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定値と等しいかの条件設定[whenTextEqualTo(テキスト)]

whenTextEqualTo(text)
セルテキストが指定したテキストと等しいセルを表示するようにフィルタ条件を設定します。

function whenTextEqualToSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenTextEqualTo("hello")
                 .build();
  // 指定値と等しい値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
textString唯一の許容値。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

指定値で始まるかの条件設定[whenTextStartsWith(テキスト)]

whenTextStartsWith(text)
指定したテキストでセルテキストが始まるセルを表示するようにフィルタ条件を設定します。

function whenTextStartsWithSample() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = SpreadsheetApp.newFilterCriteria()
                 .whenTextStartsWith("hello")
                 .build();
  // 指定値で始まる値のみを表示
  sheet.getFilter().setColumnFilterCriteria(1, criteria);
}
Parameters
名前タイプ説明
textString文字列の先頭と比較するテキストです。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。

基準条件設定[withCriteria(条件, 引数)]

withCriteria(criteria, args)
ブール基準を、通常は既存の基準の基準と引数から取得したBooleanCriteria値で定義された基準に設定します。

function withCriteriaSample() {
  // 既存の基準に基づくフィルタ基準を構築します。

  var sheet = SpreadsheetApp.getActiveSheet();
  var criteria = sheet.getFilter().getColumnFilterCriteria(1);
  var newCriteria = SpreadsheetApp.newFilterCriteria()
  .withCriteria(criteria.getCriteriaType(), criteria.getCriteriaValues())
  .setHiddenValues(['c'])
  .build();
}
Parameters
名前タイプ説明
criteriaBooleanCriteriaブール基準のタイプ。
argsObject[]基準タイプに適した引数の配列。引数の数とその型は、上記の対応するwhen...()メソッドと一致します。

Return
FilterCriteriaBuilder - 連鎖用のビルダー。


ブール値基準列挙型[BooleanCriteria]

ブール値の基準です。

Enum BooleanCriteria
条件付き書式またはフィルタで使用できるブール基準を表す列挙体。

Properties
プロパティタイプ説明
CELL_EMPTYEnumセルが空の場合に基準が満たされます。
CELL_NOT_EMPTYEnumセルが空でない場合、基準は満たされます。
DATE_AFTEREnum日付が指定された値より後になると、基準は満たされます。
DATE_BEFOREEnum日付が指定された値より前になると、基準は満たされます。
DATE_EQUAL_TOEnum日付が指定された値に等しい場合に基準が満たされます。
DATE_AFTER_RELATIVEEnum日付が相対日付値より後になった場合に基準が満たされます。
DATE_BEFORE_RELATIVEEnum日付が相対日付値より前の場合に基準が満たされます。
DATE_EQUAL_TO_RELATIVEEnum日付が相対日付値と等しい場合に基準が満たされます。
NUMBER_BETWEENEnum与えられた値の間にある数があるとき、基準は満たされます。
NUMBER_EQUAL_TOEnum与えられた値に等しい数があるとき、基準は満たされます。
NUMBER_GREATER_THANEnum与えられた値よりも大きい数があるとき、基準は満たされます。
NUMBER_GREATER_THAN_OR_EQUAL_TOEnum指定された値以上の数値になると、基準が満たされます。
NUMBER_LESS_THANEnum与えられた値よりも小さい数値が基準に合致したとき。
NUMBER_LESS_THAN_OR_EQUAL_TOEnum指定された値以下の数値になると、基準が満たされます。
NUMBER_NOT_BETWEENEnum与えられた値の間にない数があるとき、基準は満たされます。
NUMBER_NOT_EQUAL_TOEnum与えられた値と等しくない数があるとき、基準は満たされます。
TEXT_CONTAINSEnum入力に与えられた値が含まれていると、基準は満たされます。
TEXT_DOES_NOT_CONTAINEnum入力に与えられた値が含まれていない場合、基準は満たされます。
TEXT_EQUAL_TOEnum入力が与えられた値に等しいとき、基準は満たされます。
TEXT_STARTS_WITHEnum入力が与えられた値で始まったとき、基準は満たされます。
TEXT_ENDS_WITHEnum入力が指定された値で終了した場合に基準が満たされます。
CUSTOM_FORMULAEnum入力が与えられた式を真に評価させるとき、基準は満たされます。

参照:Google Apps Script | REFERENCE | SpreadSheet | Enum BooleanCriteria


最後に

GASフィルタ機能のまとめをご紹介させていただきました。

必要に応じて、有益な情報でさらに更新していきたいと思います。

プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。

実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。

実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。

自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。

GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。

Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓

Googleスプレッドシートの使い方や機能がわかるショートカットキー全まとめ一覧【初心者こそ必見】
表計算ソフトとして、まだまだExcelのシェア率は高いですが、GoogleスプレッドシートにはExcelにはない超強力な関数があったり、Excelとは違って常に最新版を無料で使用できます。なにより、インターネットを使ったオンライン...

ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。




コメント