GAS:スプレッドシートのフィルタ

今回は、GASを使ってスプレッドシートのフィルタ処理に挑戦しました。

残念ながら、私の知識不足のためGASの処理をする前にスプレッドシートに以下の設定をしました。その後にGASを実施しました。(「手順」の内容)

  フィルタを設定。

  フィルタの内容、何も選択しない。

手順

  1. フィルタを設定。
  2. フィルタを掛ける行について、以下を実施(何も選択しない)。
     「値でフィルタ」ー「クリア」(フィルタチェックをすべて外す)
  3. GASを実施 。   

実行したGASの内容

  • フィルタ未設定の一覧を取得。
  • 上記より、表示するデータを除く。
  • フィルタ更新

GAS

 function filtera() {
   var spreadsheet = SpreadsheetApp.getActive();
   var sheet = spreadsheet.getSheetByName("シート1");

            var filter_set=['600031','600042']; //表示するデータ
            var filter = sheet.getFilter();   //
             // C列で表示しないデータ取得
            var filter_hidden = filter.getColumnFilterCriteria(3).getHiddenValues();

              //表示しないデータから表示するデータを除く
            for(var j = 0; j < filter_set.length; j++){
                   for(var i = 0; i < filter_hidden.length; i++){
                         if( filter_hidden[i] == filter_set[j]){
                               filter_hidden[i] = "";
                               break;
                          }
                   }
            }
    var criteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(filter_hidden).build();
    spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(3, criteria);
    };

できることなら

  1. フィルタを設定 
  2. フィルタに値を設定

としたかったのですが、「2.フィルタに値を設定」の仕方がわかりませんでした。

わかったのは、フィルタチェックが外れたデータの取得方法でした。

よって、フィルタチェックが外れたデータを取得し、このデータから、表示するデータを削除することにより、実現しました。