前提
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 コメント