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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

3160閲覧

Google Apps Script[GAS]スプレッドシートの条件付き書式 シート指定の方法

gatti

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/12/10 00:37

前提・実現したいこと

別のスプレッドシートから転記させた際に構文内にclear()が含まれているため条件付き書式が消えてしまいます。GASで自動的に条件付き書式を作成するようにしたいです。
A.B.cのシートがあるとして、BシートのN列M列が空白なら色を付ける。という構文を作りたいと考えています。

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

シートの指定が出来ません。

該当のソースコード

function color(){ var sss = SpreadsheetApp.getActive().getActiveSpreadsheet(); var hss = sss.getSheetByName('Bシート'); //条件付き書式の範囲設定 var css = sss.getRange('M2:N'); Logger.log(css); //定義 var rule = SpreadsheetApp.newConditionalFormatRule().whenCellEmpty().setBackground("#fff2cc").setRanges([css]).build(); var rules = hss.getConditionalFormatRules(); rules.push(rule); hss.setConditionalFormatRules(rules); }

試したこと

var mss = SpreadsheetApp.openById("シートID");
var hss = mss.getSheetByName("Bシート");
IDを取得する構文も試しましたがエラーになってしまいました。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

別のスプレッドシートから転記させた際に構文内にclear()が含まれているため条件付き書式が消えてしまいます。

とのことでしたので、質問の意図を、以下のように解釈しています。
①転記前は、データと書式が設定されていた。
②転記するために、clear()を使用した。
③clear()によって書式までも消されてしまった。
④そのため、clear()後にもう一度書式を設定するコードを試みた。

これであれば、

clearContent()

を使用すれば、書式を維持して、値のみを削除することができますよ。

また、

var sss = SpreadsheetApp.getActive().getActiveSpreadsheet(); var hss = sss.getSheetByName('Bシート'); //条件付き書式の範囲設定 var css = sss.getRange('M2:N');

のコードについて2点ほど。
① スプレッドシートを取得する際、getActive()は不要です。

const sss = SpreadsheetApp.getActiveSpreadsheet();

こちらで十分です。

②最終行ですが、getRange()を、スプレッドシートに対して行っており、シートの指定ができていません。
ですので、

const css = hss.getRange(“M2:N”);

とすると良いでしょう。

投稿2021/12/10 05:33

編集2021/12/10 05:44
daltonya

総合スコア109

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

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

gatti

2021/12/13 00:14

ありがとうございます。無事解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問