前提
GASでスクリプトを作成しています。
操作をしたいシートには、複数の数値が入った表があり、照合して数値が合致したら別の列で「1」を表示させる関数を入力してあります。
尚、合致しない場合は「0」を出力するようになっています。
いろいろなサイトのサンプルコードを混ぜてしまっているので、ぐちゃぐちゃかと思います。申し訳ないです。
尚、SheetsAPIというものを使用しています。(これもよくわかっていません)
実現したいこと
概要としては、「印刷用チェック」のような形でチェックボックスを配置しておき、チェックボックスにチェックを入れると不要な「0」の行をフィルターで絞り込んで非表示にしたいです。
尚、チェックを外した際には絞り込む前に戻したいです。
①同じシート上のチェックボックスにチェックを入れる
②「0」行が非表示になり、「1」行のみが表示される
③チェックを外すと、もとに戻る
発生している問題・エラーメッセージ
特になし
該当のソースコード
GAS
1function myFunction() { 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const rng = ss.getActiveCell(); 4 const flag = rng.getValue(); 5 const filterSet = {};//FilterSet 6 const columnIndex =9; 7 const request = { 8 "setBasicFilter": { 9 "filter": filterSet 10 } 11 }; 12 filterSet.range = { 13 sheetId:ss.getSheetId() 14 }; 15 16 filterSet.criteria = {}; 17 18 filterSet['criteria'][columnIndex]={ 19 'hiddenValues':["0"] 20 }; 21 22 if(rng.getColumn() ==11 && flag == true){ //チェックボックスにチェックを入れた(true)の場合、SheetsAPIでフィルターをかける 23 Sheets.Spreadsheets.batchUpdate({'requests':[request]},ss.getId()); 24 25 } else if (rng.getColumn() ==11 && flag == false) {//チェックボックスからチェックを外した(false)の場合、フィルターを削除して再作成する 26 ss.getFilter().remove(); 27 ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn()).createFilter(); 28 }; 29}
試したこと
①チェックボックスを入れるとメッセージボックスが表示される
②スクリプトを実行するとフィルターで絞り込まれる
という点はバラバラのスクリプトで再現しています。
このつなぎ合わせが難しく、教えていただきたいです。
尚、シート上にボタンを2つ配置して「絞り込み」と「絞り込み解除」の対応をすることは考えましたが、
スマートじゃないなと思い実装していません。
難しい場合はボタンで対応したいと思っています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/13 06:12