今使用しているスプレッドシートの状態は、対応が終えた案件は、チェックボックスにチェックを入れて、終了確認が出来るようにしています。
チェックボックス(F列)にチェックをいれると、その右横(G列)に当日の日付が記入され、その行の背景色が白になるようにしています。
変更したい点は、チェックボックス(F列)にチェックを入れなくても、G列に何か文字が記入された時に、その行の背景色が白になるようにしたいです。
条件付き書式を変更すればよいのですが、シートが1000枚を超えるため、GASを使って全シートに条件付き書式をセットする方法を探しています。
近いもの(参照のためコードを添付)を見つけたのですが、「カスタム数式」ではなく、「次を含むテキスト」を条件にしているため、無理でした。
何か、良いアドバイスをいただけないでしょうか。
function
1 // スプレッドシートを開いたときに実行される関数 2 3 // UIの取得 4 const ui = SpreadsheetApp.getUi() 5 6 // メニューの表示名 7 const menu = ui.createMenu('スクリプト実行'); 8 9 // メニューに追加するボタン 10 menu.addItem('全シートに条件付き書式を適用する', 'set_conditional_format_all_sheets'); 11 12 // メニューを画面に追加する 13 menu.addToUi(); 14} 15 16 17function set_conditional_format_all_sheets() { 18 19 // UIを取得 20 const ui = SpreadsheetApp.getUi(); 21 22 // 現在開いているスプレッドシートを取得 23 const ss = SpreadsheetApp.getActiveSpreadsheet(); 24 25 // スプレッドシートに存在するすべてのシートを取得 26 const sheets = ss.getSheets(); 27 28 // 条件付き書式のキーワードを入力させる 29 const input = ui.prompt('キーワードを入力してください', ui.ButtonSet.OK_CANCEL); 30 31 // キャンセルが押されたらスクリプトを終了する 32 if (input.getSelectedButton() == ui.Button.CANCEL) { 33 return; 34 } 35 36 // キーワードを取り出す 37 const keyword = input.getResponseText(); 38 39 // 1シートずつ条件付き書式をセットしていく 40 for (let i = 0; i < sheets.length; i++) { 41 42 // 条件付き書式をセットするのはシート内で現在使われている範囲 43 let range = sheets[i].getRange(1, 1, sheets[i].getLastRow(), sheets[i].getLastColumn()); 44 45 // 条件付き書式のセット 46 let rule = SpreadsheetApp.newConditionalFormatRule() 47 .whenTextContains(keyword) //「テキストを含む」条件 48 .setBackground("#FFC0CB") //背景色をピンクにする 49 .setRanges([range]) //範囲は現在使われている範囲 50 .build(); //条件を確定 51 52 // 既存の条件付き書式のルールを取得する 53 let rules = sheets[i].getConditionalFormatRules(); 54 55 // 既存のルールに今回作成したルールを追加 56 rules.push(rule); 57 58 // 既存と新規のルールを合わせてシートにセットする 59 sheets[i].setConditionalFormatRules(rules); 60 } 61}ここに言語を入力 62コード

0 コメント