こんにちは!インフラエンジニアの森田です!
この記事はEnigmo Advent Calendar 2024の12日目の記事です。
また、11日目のGoogleスプレッドシート編の続きであるため未読であればそちらからご一読いただければと思います。
前回の記事ではZapierで扱うデータのインプットとなるスプレッドシートの解説を行いましたので、今回は処理とアウトプットを行うZapの解説を行います。
現在以下のZapが稼働していますが、
- 毎月22日に翌月の発表者へまとめてリマインド
- 毎週月曜日に発表者へリマインドし、発表予定がなければ募集する
- 発表があれば開始のアナウンスをし、発表予定がなければスキップのアナウンスをする
今回は翌月の発表者へまとめてリマインドするZapの解説を行いたいと思います。
毎月22日に翌月の発表者へまとめてリマインド
1.毎月22日にトリガー
まず、翌月頭の発表者の準備期間が取れるように毎月22日にトリガーするようにしています。
キャプチャと同じように設定すれば毎月のトリガーとなります。
2.翌月が何月か計算
次の工程で使用するために翌月が何月なのかを取得しています。
具体的には1のトリガーが次に動く日付(翌月の22日)から正規表現で何月かを抽出しています。
import re print(input_data['next']) result = re.findall(r'-\d{2}-', input_data['next']) return {'result' : result[0].replace('-', '')}
3.翌月の行を取得
翌月発表の行をまとめて取得してきています。
具体的には「リマインド管理シート」に開催月という列があったと思いますが、開催月が2で取得したものと同値かつ開催フラグがTRUEの行を取得しています。
注意が必要なのがEventの設定で、「Lookup Spreadsheet Rows」と「Lookup Spreadsheet Rows (Advanced)」という似たイベントが存在しますが、「Lookup Spreadsheet Rows」では取得できる行が1行のため、翌月の発表全てというような複数行取得したい場合は「Lookup Spreadsheet Rows (Advanced)」を選択する必要があります。
4.Slack送信メッセージ作成
3で取得した要素をSlackのメッセージへ整形するためpythonで実装しています。
date_list=input_data['date'].split(',') title_list=input_data['title'].split(',') SlackID1_list=input_data['SlackID1'].split(',') result = f''' 【{input_data['month']}月 Hacker’s Delightスケジュールのお知らせ】 {input_data['month']}月のスケジュールの予定はこちらです。発表者の方は準備をよろしくお願いします。 何かあれば @devrel へご連絡ください ''' for i in range(len(date_list)): string = f"\n{date_list[i]}:{title_list[i]} <@{SlackID1_list[i]}>" result = result + string print (result) return {'result' : result}
それぞれの発表の部分はリストの要素分ループで回して戻り値へ加算(追記)していく形になっています。
5.Slackへ送信
4で整形したメッセージ(戻り値)をシンプルにSlackのチャンネルに送信しています。
実際に以下のようなメッセージが送信されます。 Zapの解説は以上になります。
おわりに
今回は1つのZapを用いて解説を行いましたが、11日目の記事で解説したインプットがあれば
- 毎週月曜日に発表者へリマインドし、発表予定がなければ募集する
- 発表があれば開始のアナウンスをし、発表予定がなければスキップのアナウンスをする
上記のようなリマインドも実装することができます。
また、今回エニグモで行っているアドベントカレンダーのリマインドも同じ要領で自動化しています。
スケジュールを把握して色々なメンバーにリマインドをするというのは思いの外意識を割かれてしまうため、
GoogleスプレッドシートとZapierが利用できる環境にあれば是非自動化にチャレンジしていただければと思います。
2記事に分かれて長かったですが、お読みいただきありがとうございました。
明日の担当はRDチームの廣島さんです。お楽しみに。
株式会社エニグモ すべての求人一覧