Google apps scriptを使ってスプレッドシートにフィルターをかける方法をご紹介します。
- Google apps scriptでフィルターかけたい人
- GASでフィルターかける際に上手く出来ない人
- GASとSheet APIの連携がうまくいかない人
以上のようなことで悩んでいる方に、参考になると思います!
Google apps scriptでfilter|デフォルトだと実行できない
参考リンク:.createFilter()
冒頭GIFで使用したスクリプトはコチラ↓
function refilter(){
/*変数定義*/
var ss,sht,filterSet,columnIndex,request
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getSheetByName("シート1");//対象のシートを変数へ格納
filterSet = {};//FilterSet
/*フィルターをかけるシートのSheetIdを取得*/
filterSet.range = {
sheetId:sht.getSheetId()
};
/*フィルターをかける列*/
filterSet.criteria = {};
columnIndex = 2;//3列目の値選択
/*フィルターで非表示にする項目*/
filterSet['criteria'][columnIndex]={
'hiddenValues':["A型","O型","AB型"]
};
/*requestメソッドでAPI接続してフィルターをかける*/
request = {
"setBasicFilter": {
"filter": filterSet
}
};
/*updateメソッドでシート更新*/
Sheets.Spreadsheets.batchUpdate({'requests':[request]},ss.getId());
}
・・だがしかし
上記スクリプトはそのまま実行してもフィルターの操作は出来ません。下記エラーが表示されると思います。
ReferenceError: 「Sheets」が定義されていません。
実は紹介したコードはウソではなく実際に動くコードです。
ただし外部APIと連携しないと有効にならないメソッドが含まれています。
そのためスクリプトがデフォルト状態ではフィルター操作はできません。
エラーが表示されてしまうんですね。
Google apps scriptでfilterを操作|Sheet APIと連携する
スクリプトからスプレッドシートのフィルター操作をする際は、「Sheet API」と連携する必要があります。
スクリプトエディタ画面からサクッと連携出来ます。
Sheet API連携手順
フィルター操作を設置するスプレッドシートを開き、「ツール > スクリプトエディタ」を選択。
「スクリプトエディタ > リソース > Googleの拡張サービス」を選択。
Googleの拡張サービス画面が表示されるので・・
下へスクロールして「Google Sheets API」をONにします。
下の黄色いメッセージボックスの「Google APIコンソール」テキストリンクをクリック。
Google Cloud Platformのダッシュボード画面が開くので
左のサイドメニューから「ライブラリ」を選択。
検索窓が表示されるので「sheet」と入力してEnter。
「Google Sheet API」が表示されるのでカードをクリック。
Google Sheets APIカードが表示されるので「有効にする」をクリック。
トラフィック画面が表示されていればOKです!
最後にスクリプトエディタ画面に戻って「OK」をクリックすればSheet APIとの連携は完了です。
ちなみに他の外部APIの機能については以下記事が詳しいです↓
参照記事Google apps scriptを無料で機能拡張出来る29個のAPIまとめ
スクリプトエディタからSheet APIと上手く連携できましたか?
ではGoogle apps scriptでスプレッドシートのfilterを操作していきます。