[FileMaker]「第1・X 曜日の前日」に処理を実行する
以前 Raspberry Pi の cron で「第 X・Y 曜日の "前日"」(例:第3土曜日の前日)に処理を実行する方法について書いた。
[Raspberry Pi] cron で「第 X 曜日の前日」に実行3 – with a Christian Wife
https://wacw.cf/2018/12/29/cron-the-day-before-x-th-week-3/
私の住んでいるところは、第1水曜日が不燃ごみの日だ。不燃ごみの前日も cron を使えば、Slack に通知したりできると思った。
そこで問題に気付きました。
「第 "1"・X 曜日の前日」は cron でやろうとすると、これまで以上にややこしくなる!
第1火曜日が1〜6日にあたる月は、冒頭リンクの第3土曜日の前日と同じようにやればいい。
しかし、第1火曜日が月末になってしまう月(すなわち第1水曜日が1日の場合)は、月末の日付が 28・29・30・31 の4パターンあるので、それらの場合分けを考えると計算式を考えるのが難しそうだ。
ということで、それなら「第1水曜日の前日」に関しては、FileMaker Server のスケジュールで処理を実行することにした。FileMaker Server を使えば指定日に Slack に投稿したりすることも簡単にできるからだ。
参考:
SlackにFileMakerから通知を送信する – Qiita
https://qiita.com/yasuhikoc/items/f0fdc4365c7e0da34915
環境:macOS Catalina Version 10.15.6(英語環境)、FileMaker Pro 18 Advanced
cron と違い、FileMaker の計算式で第1水曜日の前日を考えるには、「明日が第1水曜日である日」を計算式で求め、それに合致する日にだけ処理を実行すればいい。
具体的には、第1水曜日というのは1〜7日のいずれかが水曜日の日である。
なので、スクリプトで以下のように書き、FileMaker Server のスケジュールに登録しておけばいい。
1If [ DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 1
2or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 2
3or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 3
4or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 4
5or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 5
6or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 6
7or DayOfWeek ( Get ( CurrentDate ) + 1 ) = 4 and Day ( Get ( CurrentDate ) + 1 ) = 7
8 ]
9 [実行する処理]
10End If
参考:
DayOfWeek
https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/dayofweek.html
Day
https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/day.html