広告

Google apps script でfilterをかける方法|Sheet APIと連携したら上手くいった

2018年1月18日

Google apps scriptを使ってスプレッドシートにフィルターをかける方法をご紹介します。

OYAKUN
OYAKUN
「Google apps scriptでスプレッドシートにフィルターをかける」情報が意外にネットや本に載ってなくて気づいたら2018年になってました(泣)
  • Google apps scriptでフィルターかけたい人
  • GASでフィルターかける際に上手く出来ない人
  • GASとSheet APIの連携がうまくいかない人

以上のようなことで悩んでいる方に、参考になると思います!

Google apps scriptでfilter|デフォルトだと実行できない

.createFilter()でGASでフィルターを作成できるようになりました!

参考リンク:.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」が定義されていません。

あひる
あひる
え?じゃあ上のコードはなんなの?嘘なの?ねえはげ管理人、正解のコード教えてよ

OYAKUN
OYAKUN
お、おっふ...

実は紹介したコードはウソではなく実際に動くコードです。

ただし外部APIと連携しないと有効にならないメソッドが含まれています。

そのためスクリプトがデフォルト状態ではフィルター操作はできません

エラーが表示されてしまうんですね。

あひる
あひる
んなら先に言えwww

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を操作していきます。

次のページへ >