Google apps scriptでfilterを設置するメソッド
Google apps scriptでfilterを扱うには
setBasicFilter
を使います。
使い方としては
- フィルターをかける範囲を指定
- フィルターをかける基準を指定
- requestメソッドでAPI連携(setBasicFilter)
- updateメソッドでスプレッドシート更新
と大まかにこんな感じで、javascriptの配列を使って設置していきます。では実際に。
対象のシートを定義する
先に対象シートを変数に定義しておきます。
/*変数定義*/
var ss,sht,filterSet,columnIndex,request
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName("シート1");//対象のシートを変数へ格納
filterSet = {};//FilterSetで{}の中を操作
- filterset(配列)でフィルター範囲の操作
- columnIndexはフィルターで絞る対象列
- requestはAPI接続
といった手順で設定ですね。
フィルターを設置する範囲を指定する
フィルターを設置する範囲(range)を指定します。
/*フィルターをかけるシートのSheetIdを取得*/
filterSet.range = {
sheetId:sht.getSheetId()
};
Sheet APIでフィルター更新する際にsheetIdが必要となるため、
sht.getsheetId
で "シート1" のIdを取得します。
フィルターをかける基準を決める
フィルターをかける基準(criteria)を決めます。
/*フィルターをかける列*/
filterSet.criteria = {};
columnIndex = 2;//3列目の値選択
今回は「血液型」の列にフィルターをかけたいので、アクティブな位置から3列目
columnIndex = 2
を指定します。
フィルターで非表示にする項目を指定する
フィルターをかける列で非表示にする値を指定(3列目を基準にhidden.valueの値を非表示)します。
/*フィルターで非表示にする項目*/
filterSet['criteria'][columnIndex]={
'hiddenValues':["A型","O型","AB型"]
};
'hiddenValues':["A型","O型","AB型"]
で3列目のA型とO型とAB型を非表示に指定しました。
hidden(ヒドゥン)
javascriptで非表示・表示を操作するオブジェクト。
requestメソッドでSheet APIと連携
requestメソッドを使ってSheet APIと連携➜
setBasicfilterメソッド
を動かしてフィルターを設置します。
/*requestメソッドでAPI接続してフィルターをかける*/
request = {
"setBasicFilter": {
"filter": filterSet
}
};
SetBasicFilterRequest()
シートに関連付けられた基本フィルタを設定します。
FILTER
ソース範囲をフィルタ処理して、指定した条件を満たす行または列のみを返します。構文
FILTER(範囲, 条件1, [条件2, ...])
batchupdateメソッドでシート更新
最後に
spreadsheets.batchUpdateメソッド
を使って指定するシートを更新します。
//スプレッドシートをbatchUpdateで更新
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
メソッド:spreadsheets.batchUpdate
スプレッドシートに1つ以上の更新を適用します。
多分こんな風に動かすことが出来るんじゃないかなと・・
カレンダー作成Google apps scriptでカレンダーに登録しよう!-終日編-
まとめ
Google apps scriptからスプレッドシートへfilterを設置する方法でした。上手く出来ましたか?
要約すると
- スクリプトエディタでSheet APIと連携
- フィルターをかける範囲・基準・非表示を決める
- シートを更新してフィルターをかける
という感じですね。
Excelマクロでフィルター操作をする際はFilter関数を使いますが、Google apps scriptでは外部APIと連携しなければBasicFilterメソッドが扱えないところが最大のポイントではないでしょうか。
関連記事: Google apps scriptでsortする方法|昇順・降順・列ごとに並び替えする方法
関連記事: 5分で出来る|Google apps scriptからカレンダーへイベントの場所・説明を登録する3つの手順
関連記事: Google apps scriptでsortする方法|昇順・降順・列ごとに並び替え
関連記事: Google apps scriptでfor loop|繰返し処理を3ステップで