質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

9762閲覧

【GAS】複数のシートを一括で変更する方法について。

o_a_ko

総合スコア3

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/08/01 02:50

編集2021/08/01 18:14

Google Apps Script(GAS)についてお聞きしたいことがあります。

これまで以下のようなコードを使用し、複数のシートに条件付き書式を追加してセルの背景の色を変えていました。

function newConditionalFormatRule(){ const ss = SpreadsheetApp.getActive() const sheet = ss.getSheetByName("1") const range = sheet.getRange('A1:Z1'); const rule = SpreadsheetApp.newConditionalFormatRule() .whenTextEqualTo(100) .setBackground("#FF0000") .setRanges([range]) .build(); const rules = sheet.getConditionalFormatRules(); Logger.log(rules); rules.push(rule); sheet.setConditionalFormatRules(rules); }

最初は対象のシートが少なかったこともあって3行目のシート名の部分を1つずつ入力し直して変更していたのですが、取り扱うシートの数が増えてきたため複数のシートを一括で変更する方法を探しています。

最終的には「シート1からシート100のような複数のシートに同時に条件付き書式を追加する」といった具合にできれば嬉しいです。

表現がわかりにくい部分もあると思いますが、何かいい対処法があれば教えていただけないでしょうか?
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

下記のようなコードでやりたいことをとりあえず達成することができました。

function newConditionalFormatRule(){ var ash = SpreadsheetApp.getActiveSpreadsheet() var sheets = ash.getSheets() for (i = 0; i < ash.getSheets().length; i++) { var range = sheets[i].getRange('A1:Z1'); var rule = SpreadsheetApp.newConditionalFormatRule() .whenTextEqualTo(100) .setBackground("#FF0000") .setRanges([range]) .build(); var rules = sheets[i].getConditionalFormatRules(); Logger.log(rules); rules.push(rule); sheets[i].setConditionalFormatRules(rules); } }

コメントありがとうございました。

投稿2021/08/01 18:02

編集2021/08/01 18:15
o_a_ko

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

引用テキスト複数のシートに同時に条件付き書式を追加する

同時にはできないので、スプレッドシート内の全シートを取得して並び順毎に1つずつシートを取得してループ処理をする流れです。

以下のサイトを参考に、まずはコード修正をしてみると良いです。

https://excel-ubara.com/apps_script1/GAS014.html


追記
forループ内で const sheet = sheets[i]; としてあげれば、あとはそのまんまです。

GAS

1function newConditionalFormatRule(){ 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const sheets = ss.getSheets(); 4 5 for(i=0; i<sheets.length; i++){ 6 const sheet = sheets[i]; 7 const range = sheet.getRange("A1:Z1"); 8 const rule = SpreadsheetApp.newConditionalFormatRule() 9 .whenTextEqualTo(100) 10 .setBackground("#FF0000") 11 .setRanges([range]) 12 .build(); 13 const rules = sheet.getConditionalFormatRules(); 14 rules.push(rule); 15 sheet.setConditionalFormatRules(rules); 16 } 17}

投稿2021/08/01 11:22

編集2021/08/07 12:10
sawa

総合スコア3002

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

o_a_ko

2021/08/01 17:59 編集

コメントありがとうございます。 function newConditionalFormatRule(){ var ss = SpreadsheetApp.getActiveSpreadsheet() var sheets = ss.getSheets() for (i = 0; i < ss.getSheets().length; i++) { } } 教えていただいたサイトを参考に上記のようなコードを書き、このfor文のなかに質問にある条件付き書式のコードをなんとか組み込めないかと試行錯誤をしているのですがなかなか思ったような結果を得ることができません。 もし何か改善点がわかるようでしたらアドバイスしていただけるとありがたいです。
sawa

2021/08/07 12:12 編集

解決されてなによりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問