最近(2022年8月頃)から新しく習慣化に取り組んでいることがあって Google Sheets に数値を記録している.そのときに Google Sheets で以下の画像のように「背景色」を設定している.設定するときに Microsoft Excel でも Google Sheets でも「条件付き書式を使えばできるでしょ!」と思ったものの,条件式をササッと書けずに調べることになったのでブログに残しておくことにした!
- 今日(背景色 : 緑色)
- 週末(背景色 : 黄色)
- 祝日(背景色 : 赤色)
「今日」を判定する
データ範囲を選択して条件付き書式を設定する.TODAY()
を使う!
=$B3=TODAY()
「週末」を判定する
データ範囲を選択して条件付き書式を設定する.WEEKDAY()
を使う!
引数に 2
を設定すると,週末を 6
と 7
で判定できるようになる.個人的に「月曜始まり」が好き!
=OR(WEEKDAY($B3, 2)=6, WEEKDAY($B3, 2)=7)
「祝日」を判定する
祝日を判定するにはひと手間かかるけど「祝日リスト」シートに日付と祝日名をまとめて,条件付き書式を設定する.COUNTIF()
と INDIRECT()
を使う!
=COUNTIF(INDIRECT("祝日リスト!$A$1:$A$100"), $B3)=1
「祝日リスト」はせっかくなら自動的に作りたくて,今回は「Holidays JP API : 祝日一覧 API (date)」を使った.
以下の GAS (Google Apps Script) を使って「祝日リスト」シートに書き出した.A 列に「日付」で B 列に「祝日名」を書き出す.実装は雑に書いたからリファクタリングできる部分はありそう!
function myFunction() { const sheet = SpreadsheetApp.openById('xxxxx').getSheetByName('祝日リスト'); sheet.clear() const response = UrlFetchApp.fetch('https://holidays-jp.github.io/api/v1/date.json'); const holidays = JSON.parse(response) for([key, value] of Object.entries(holidays)) { sheet.appendRow([key.replace(/-/g, '/'), value]); } }