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();
逆の記述で非表示にする値を指定しなければならない。
数が多い場合はループ処理をうまく活用して配列を作ると良いだろう。