実現したいこと
E列に「完了」の値が入っている行全体に取り消し線を引きたい
前提
下記ソースだと「完了」と入っているセルのみに取り消し線が引かれてしまいます
行全体に取り消し線を引くにはどうしたらいいでしょうか?
該当のソースコード
GAS
1function setStrikethrough() { 2 var sheet = SpreadsheetApp.getActiveSheet(); 3 var range = sheet.getRange("E:E"); 4 var rule = SpreadsheetApp.newConditionalFormatRule() 5 .whenTextEqualTo("完了") 6 .setStrikethrough(true) 7 .setRanges([range]) 8 .build(); 9 var rules = sheet.getConditionalFormatRules(); 10 rules.push(rule); 11 sheet.setConditionalFormatRules(rules); 12}
シート全体を例えば、A1:Z1000の範囲とした場合、
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:Z1000");//条件を設定する範囲
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied('=($E1 = "完了")')//カスタム数式を設定(相対参照は左上のセルで記載)
.setStrikethrough(true)
.setRanges([range])
.build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);
}
のようなカスタム数式で希望どおりの動作になりますか?
ありがとうございます!
希望通りの動作となりました!
> GASにて外部APIから情報を取得している兼ね合いで、条件付き書式を設定しても上書きされて設定が消されてしまいます。
通常、条件付き書式は、セルのデータがGASで上書きされても書式の設定は残ると思いますが、
手入力で設定した条件付き書式が上書きされて消えるような仕組みになっているのであれば、
こちらもGASで設定しているは条件付き書式なので、上書きされて消えるのでは無いでしょうか?
GASで外部から情報を取得するたびに同じGASで条件付き書式を設定するのでしょうか?
外部から情報を取得する度に自動で書式設定し直すように設定しました。
ご回答いただきありがとうございます。
あくまでも、念のためですが...
上のスクリプトは条件付き書式を一つ増やす
rules.push(rule);
コードになってます。
なので、そのまま実行すると
繰り返し実行するたびに条件付き書式が増えていきます。
外部から情報を取得するGASが条件付き書式を
確実に消去するのであれば問題ないです。
万が一消去されない場合のために
rules.pop();//条件付き書式の最後の一つを消去
rules.push(rule);//条件付き書式を追加
としておくと増えていくのを防ぐことができます。

回答1件
あなたの回答
tips
プレビュー