2021年11月4日木曜日

特定のライングループに定期的にメッセージを送る方法について

あまプロではちょっとしたメッセージの自動送信ツールを開発する事があります。
作る途中にちょっとはまったんで、あメログ。

あまプロは曜日と月の回数に選って開催する教室を決めています。
例えば第一木曜日と第一金曜日が武庫教室…の様な感じです。
こうしないと、月毎に開催教室が変わってしまい管理だ煩雑になるので、曜日で決めています。
例えば2021年10月7日(木)は第2週の木曜日ですが、第一木曜日になります( -"-)。
第一木曜日(武庫教室)と第二木曜(伊丹昆陽教室)とでは大違いなんで、間違うと生徒さんに迷惑が掛かってしまいます。
かと言って、毎回カレンダで確認するもの面倒やし…。

そこであまプロでは GASLINE NOTIFYを使って各教室の開催前に指定したグループにメッセージを送るサービスを作ってみました。
当日が第何曜日(第何週の曜日ではない)を取得するのがちょっとややこしかったですが…

Math.floor( ( new Date( t.getFullYear( ), t.getMonth( ), 1).getDay( ) + new Date( ).getDate( ) - 1) / 7) + ( new Date( t.getFullYear( ), t.getMonth( ), 1).getDay( ) > new Date( ).getDay( )? 0: 1)

 こんな感じで取得出来ました。
ワンライナで記述しているので解り難いですが、変数を使って整理すると

let t = new Date( );
let f = new Date( t.getFullYear( ), t.getMonth( ), 1);
let n = Math.floor( ( f.getDay( ) + t.getDate( ) - 1) / 7) + ( f.getDay( ) > t.getDay( )? 0: 1);

 こんな感じです。

 第何曜日かが取得できれば、後はそれをトリガで実行するだけで、教室前に「第何曜日と教室」のメッセージを送る事ができました!

グーグルさんラインさん、有り難う。