休日取得WebApi FormeWebApi-JpnHolidayの紹介
May 18, 2024
excel Excel for Mac Mac データ入力 操作 FormeStudio QC KAIZEN WEBAPI休日取得WebApi:FormeWebApi-JpnHolidayの紹介
以前紹介した祝日取得では日毎の祝日判定には非常に便利ですが年毎の取得では時間がかかる方法をあくまで一つのアイデアとして説明させてもらいました。多くの人は何年も先の祝日を知るより、確定している来年までの祝日リストで用が済む場合も多いと思います。そこで簡易なWebApiを実装公開してみました。
FormeWebApi-JpnHoliday
WebApiと呼ぶにはあまりにも簡単なプログラムで恥ずかしいくらいですが、https://the-forme.net/FWA/JpnHoliday/にアクセスすると内閣府が配布している祝日リストより抽出した最新年から3年遡ったデータをカンマ区切り文字で返します。
サーバー負担低減とアクセスの簡易さを主眼に実装しているので機能的に貧弱であるのは認めます。但し、運用負担が小さいので長く公開できると考えています。更新は元データの更新予定日である毎年2月以降(1週間以内)に予定しています。ライセンスはMITライセンスなので自由に使ってください。
Excelでの使用方法
マクロなしのExcelで利用する場合はまず、WEBSERVICE関数(Windows専用)にFWA-JonHolidayのアドレスを入力して祝日データを取得します。次にその祝日データをコピーし、任意のセルに値として貼り付けます。貼り付けたセルを選択した上でデータタブ>データの分割を選び、ウィザードで区切り文字をカンマにしてデータの隠せるに分割します。分割後、以下の関数を入力して祝日シリアル値と祝日名を取り出します。
=OFFSET(貼り付けたセル,0,(ROW()-行数が0になる数)*2)'祝日シリアル値
=OFFSET(貼り付けたセル,0,(ROW()-行数が0になる数)*2 + 1)'祝日名
オートフィルですべての祝日データを取り出したら完成です。
FormeStudio.xlsmVer2.682での使用方法
FormeStudio.xlsmVer2.682ではより効果的に使用することが出来ます。まずWebApiへのアクセスはExcel for Macでも利用可能なFormeWebApiをでも可能ですがここではネット障害への備えとして新しく実装したFormeアロー関数を利用した方法を紹介します。
はじめに任意のセルに以下のように入力し、選択状態にします。
祝日データを入力するセル番地<-WebApiのアドレス
Forme2タブ>インサートツール>Formeアロー関数を実行をクリックすると指定したセル番地に祝日データが入力されます。FormeWebApiとの違いは操作したときしかサーバーアクセスをしない点です。WEBAPI関数やFormeWebApi関数では再計算時にネット障害があった場合、データへのアクセスが意図せず途切れてしまう場合がありますが、Formeアロー関数ではその可能性を減らせます。またアクセス先のサーバー負担軽減にもなります。
後は先に説明したデータの分割とOFFSET関数を使った方法で祝日リストを完成させてもいいですが、今回は新しく実装したFormeSplit関数の利用方法の紹介をします。
FormeSplit関数はTEXTJOIN関数などで作成した区切り文字で連結されたテキストを配列に変更するスピル関数(一つのセル入力で配列をセル範囲に入力する機能)です。Excel2019 for Macからでは通常の操作で利用できますが、Windows版のExcel2019では範囲を選択した上でCtrl + Shift + Enterで入力する必要があります。使い方は以下の通りです。
=FormeSplit("区切り文字",グループ数,分割する文字列)
グループ数の指定は以下となる。
0:TETJOIN関数と同じ動き
1:1列に展開
2~:2~列に展開
-1:1行に展開
-2~:2~行に展開
この関数はスピル機能がユーザー定義関数に適用されたExcel2019未満では上手く動作しません。
![](/note/forme_blog.png)
FormeWebApi-JpnHolidayとFormeアロー関数、FormeSplit関数がお役に立てれば本望です。