2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SpreadJSでフィルタ関連のコーディング方法

Last updated at Posted at 2023-05-15

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のサポートにフィルタの保存と復活情報を尋ねたけど、サポートは「案内できない」という回答だったので自力で実装しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?