SpreadJSでフィルタ関連のコーディング方法です。
SpreadJSのバージョンは15です。
その①フィルタをコードから適用する方法
filter.js
//フィルタ条件の作成
const condition = new GC.Spread.Sheets.ConditionalFormatting.Condition(
GC.Spread.Sheets.ConditionalFormatting.ConditionType.textCondition,
{
compareType: 0, //「0」は↓のexpextedの文言と一致しているかどうかの比較
expected: "filterPhrase" //フィルタ対象としたい文言
}
);
// フィルタをインスタンス化しているイメージ
const rowFilter = activeSheet.rowFilter();
// フィルタの適用
const FILTER_TARGET_COLUMN = 1
rowFilter.addFilterItem(FILTER_TARGET_COLUMN, condition);
rowFilter.filter();
参考リンクはこちら
その②適用されているフィルタを保存する方法
filter.js
// フィルタをインスタンス化しているイメージ
const rowFilter = sheet.rowFilter();
//フィルタ情報を保持するリスト
let filterList = []
//すべての列数のフィルタを取得
for(let i=0;i<sheet.getColumnCount();i++){
const res = rowFilter.getFilterItems(i)
filterList.push(res)
}
その③保存したフィルタを適用する方法
filter.js
//その②で取得したフィルタ情報を適用する
// フィルタをインスタンス化しているイメージ。すでにインスタンス化済みなら不要
const rowFilter = sheet.rowFilter();
for(let i=0;i<sheet.getColumnCount();i++){
//filterList[i]はフィルタの条件の数だけ存在するリストなので、
//filterList[i].lengthの分だけ適用するとすべてのフィルタが適用される
for(let j=0;j<filterList[i].length;j++){
//第一引数は適用する列、第二引数は適用するフィルタ
rowFilter.addFilterItem(i, filterList[i][j]);
}
}
//フィルタリングの実行
rowFilter.filter()
所感
grapeCityのサポートにフィルタの保存と復活情報を尋ねたけど、サポートは「案内できない」という回答だったので自力で実装しました。