
実現したいこと
・スプレッドシートに設定されているフィルターを一度解除し、作業後再度元の状態に戻したい
発生している問題
For文内、getColumnFilterCriteriaでフィルター情報を一つずつ取得し、最終的に再度元の条件に設定しなおしたいが、対象シートの2列目までしかフィルター条件が復元されない。
該当のソースコード
var ss = SpreadsheetApp.getActiveSpreadsheet(); //このスプレッドシート var sheets = ss.getSheets(); //シートのループ処理用 var columnLength = 24 function setAllData() { //担当者ごとのシートを1つずつループ for (var i = 0; i < ss.getSheets().length; i++) { //処理対象のシートを名前で判断 if (sheets[i].getName().match(/aaa|bbb/) === null) { continue; } //フィルター情報を取得したのち解除する var filter = sheets[i].getFilter(); var filters = []; // フィルター状態を保存するための配列 if( filter == null ){ } else { for (var j=0; j < columnLength; j++){ filters.push(filter.getColumnFilterCriteria(j+1)) } filter.remove() }; checkInfo(); var newfilter = sheets[i].getRange(1,1,sheets[i].getLastRow(),sheets[i].getLastColumn()).createFilter() //フィルタを新たに設定します for (var j=0;j<columnLength;j++){ if(filters.length>0){ newfilter.setColumnFilterCriteria(j+1,filters[j]) } } } }
試したこと
フィルター条件をpushする際、2列目までの情報しかpushされていないと推測しており、
for文の条件式をいろいろ変えてやってみましたが、何度やっても2列目までのフィルター条件しか復元されません。
エラーもなく、一見問題なさそうなので途方に暮れております。


回答1件
あなたの回答
tips
プレビュー