knowledge 内閣府のページから祝日一覧をダウンロードし、特定日付が祝日かどうかを判定するサンプル

下記では、内閣府のWebページから祝日一覧CSVをダウンロードし、指定された日付がその一覧に掲載されているかを確認するサンプルを紹介します。

以下の順序で処理をしています。
----------------------------
1. 内閣府のWebページをGoogle Chromeで開き、ダウンロードフォルダにCSVファイルをダウンロード
※なお、ダウンロードフォルダに既に同名フォルダが存在する場合は考えないものとします

2. CSVファイルの内容を変数に格納

3. 判定する日付が2の変数内に存在するか否かを確認

4. 存在する場合は、「休日名」および「何曜日」かを表示。存在しない場合は、休日でない旨を表示。

----------------------------

【サンプルコード】

<AMVARIABLE NAME="var_csvContents" DESCRIPTION="csvファイルのテキスト内容を格納" />
<AMVARIABLE NAME="var_cnt" VALUE="0" DESCRIPTION="検出数" TYPE="number" />
<AMVARIABLE NAME="var_Date" DESCRIPTION="対象日付" />
<AMVARIABLE NAME="var_kyujitsuName" DESCRIPTION="休日名" />
<AMVARIABLE NAME="var_kyujitsuPage" VALUE="https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv" DESCRIPTION="内閣府の休日一覧ページ" />
<AMSHOWDIALOG ACTIVITY="input" DEFAULTVALUE="%format(Date(), &quot;yyyy/m/d&quot;)%" RESULTVARIABLE="var_Date" WINDOWTITLE="日付入力" COUNTDOWNDELAY="10">休日かどうかを判定する日付を入力してください。
(必ず「yyyy/m/d」形式で入力してください。「01」や「08」では判定できません。)</AMSHOWDIALOG>
<AMREGION NAME="内閣府のページからCSVファイルを取得" COLLAPSE="no" />
<AMWEBBROWSER URL="%var_kyujitsuPage%" SESSION="BrowserSession1" BROWSER="chrome" />
<AMWAIT SCALAR="1" />
<AMWEBBROWSER ACTIVITY="close" SESSION="BrowserSession1" />
<AMENDREGION />
<!--ファイル読込-->
<AMFILESYSTEM ACTIVITY="read_file" FILE="%userprofile%\Downloads\syukujitsu.csv" RESULTVARIABLE="var_csvContents" />
<!--対象日をテキスト検索 カンマ込みで検索しないと、「1/1」の検索で「1/10」もヒットするので注意-->
<AMTEXT TEXT="%var_csvContents%" FIND="%var_Date%,.*?%vbCrLf%" USERE="YES" FOUNDTEXTVARIABLE="var_kyujitsuName" TOTALMATCHESVARIABLE="var_cnt" />
<!--ヒットしていれば休日 そうでない場合は休日ではない-->
<AMIF EXPRESSION="%var_cnt% = 0" />
<AMSHOWDIALOG WINDOWTITLE="休日" COUNTDOWNDELAY="5">指定された日付「%var_Date%」は休日ではありません。</AMSHOWDIALOG>
<AMELSE />
<AMTEXT ACTIVITY="replace" TEXT="%var_kyujitsuName%" FIND="%var_Date%," REPLACE="" RESULTVARIABLE="var_kyujitsuName" />
<AMTEXT ACTIVITY="trim" TEXT="%var_kyujitsuName%" RESULTVARIABLE="var_kyujitsuName" REMOVE="returns" />
<AMSHOWDIALOG WINDOWTITLE="休日判定結果" COUNTDOWNDELAY="5">指定された日付「%var_Date%」は休日です。
休日名は「%var_kyujitsuName%」です。
なお、当日は「%WeekdayName(Weekday(var_Date))%」です。</AMSHOWDIALOG>
<AMIF ACTIVITY="end" />