GAS チェックボックスにチェックを入れた際に特定条件でフィルターの絞り込みをしたい

前提

GASでスクリプトを作成しています。
操作をしたいシートには、複数の数値が入った表があり、照合して数値が合致したら別の列で「1」を表示させる関数を入力してあります。
尚、合致しない場合は「0」を出力するようになっています。

いろいろなサイトのサンプルコードを混ぜてしまっているので、ぐちゃぐちゃかと思います。申し訳ないです。
尚、SheetsAPIというものを使用しています。(これもよくわかっていません)

実現したいこと

概要としては、「印刷用チェック」のような形でチェックボックスを配置しておき、チェックボックスにチェックを入れると不要な「0」の行をフィルターで絞り込んで非表示にしたいです。
尚、チェックを外した際には絞り込む前に戻したいです。

①同じシート上のチェックボックスにチェックを入れる
②「0」行が非表示になり、「1」行のみが表示される
③チェックを外すと、もとに戻る

発生している問題・エラーメッセージ

特になし

該当のソースコード

GAS

function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const rng = ss.getActiveCell(); const flag = rng.getValue(); const filterSet = {};//FilterSet const columnIndex =9; const request = { "setBasicFilter": { "filter": filterSet } }; filterSet.range = { sheetId:ss.getSheetId() }; filterSet.criteria = {}; filterSet['criteria'][columnIndex]={ 'hiddenValues':["0"] }; if(rng.getColumn() ==11 && flag == true){ //チェックボックスにチェックを入れた(true)の場合、SheetsAPIでフィルターをかける                  Sheets.Spreadsheets.batchUpdate({'requests':[request]},ss.getId()); } else if (rng.getColumn() ==11 && flag == false) {//チェックボックスからチェックを外した(false)の場合、フィルターを削除して再作成する ss.getFilter().remove(); ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn()).createFilter(); }; }

試したこと

①チェックボックスを入れるとメッセージボックスが表示される
②スクリプトを実行するとフィルターで絞り込まれる

という点はバラバラのスクリプトで再現しています。
このつなぎ合わせが難しく、教えていただきたいです。

尚、シート上にボタンを2つ配置して「絞り込み」と「絞り込み解除」の対応をすることは考えましたが、
スマートじゃないなと思い実装していません。
難しい場合はボタンで対応したいと思っています。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント