背景
自身の勤務実態を公的機関に証明するため、出勤簿を作成することになりました。
本来なら改竄できないタイムカードや、WEB就業っぽいシステムが望ましいのですが、法律に関わることに使うわけではないので、お手軽にExcelで作ることにしました。
祝日を自動で判別したいよね
ネットを調べると、内閣府が国民の祝日をCSVで提供しています。
こちらからダウンロードできます。
これはありがたいのですが、毎年CSVファイルをダウンロードしてこなくてはいけませんね。
もっとお手軽に祝日を知る方法はないのかを調べていて、とても便利な方法が見つかりました。
国民の祝日を取得するWebサービス
http://api.excelapi.org/datetime/holiday?date=44197にWebブラウザでアクセスしてみます。
すると、Webブラウザに元日
と表示されます。
44197
という数値はExcelでは2021年1月1日
のことです。
このWebサービスに渡す数値を把握できれば、国民の祝日を知ることができます。
WEBSERVICE関数を利用する
Excelの関数にWEBSERVICE
というものがあります。
AppleのNumbers派の私はあまり詳しくないですが、Webサービスの結果をセルに表示する関数
のようです。
試しに、下記のようにA列に日付を入れます。
Excelが自動的に日付と認識してくれます。
B列は数式=A1
、=A2
、=A3
を入力し、B列の書式は標準
にします。
そうすると、日付の数値が表示されます。これがWebサービスに渡す数値です。
C列は数式=WEBSERVICE("http://api.excelapi.org/datetime/holiday?date="&A1)
と入力します。WebサービスにA列の値を渡せば、国民の祝日が返ってきます。
祝日がなければ空白です。
これをうまく利用すれば、出勤簿の祝日を赤色に塗るということができます。
出勤簿を作る
WEBSERVICE関数を利用して出勤簿を作ってみました。
国民の祝日は確実にお休みです。
また、土日も確実にお休みです。
この辺をうまく検出し、勤務しない日の行を赤色で塗ります。
自動でできて便利ですね。
Windows版Excelのみで動作する
この動作を検証しているのは、ARM版Windows上で動作させたExcelです。
この環境では動作しています。
Mac版のExcel、およびWEBブラウザで動作させるExcelではWEBSERVICE関数
は使えませんでした。
参考になるサイト
ExcelAPI〜Excelにインターネットからデータを取り込むサイト
後日談...
ExcelAPIのサイトを読み込んでいたら、Googleスプレッドシートでも使えることがわかりました。
=IMPORTXML("https://api.excelapi.org/datetime/holiday?date="&セル, ".")
というように、IMPORTXML
という関数を使えば国民の祝日を取得できます。
とても便利な機能で、こういう情報を提供してくれていることはとてもありがたいですね。