Google Apps Scriptでスプレッドシートにフィルタをかけることができるのだが、そのうち一部の関数が動作しない問題があったので、解決に至ったプロセスを紹介する。

例えば1列目に「hoge」「fuga」「piyo」と3種の値が入力されているデータに対し、「hoge」のみを表示させるフィルタをかけたい場合、以下のようなコードとなる。

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();

let rule = SpreadsheetApp.newFilterCriteria()
  .setVisibleValues(['hoge'])
  .build();

let filterDataRange = sheet.getRange(1, 1, 100, 3);
filterDataRange.createFilter();

sheet.getFilter().setColumnFilterCriteria(1, rule)

5行目のsetVisibleValuesでフィルタ条件を指定しているのだが、公式マニュアルに載っているとおりsetVisibleValues関数を使ってみたが何故かエラーが発生し、使うことができなかった。

調べてみると、一応公式の関数リストにsetVisibleValuesは載っているが、まだサポートされていないという記事が見つかり、現状ではsetHiddenValues関数でしかフィルタの条件を指定することができないようだ。

先程のコードの一部を修正したものがこちら。

let rule = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['fuga', 'piyo']) // 非表示にする値を指定
  .build();

逆の記述で非表示にする値を指定しなければならない。

数が多い場合はループ処理をうまく活用して配列を作ると良いだろう。