GoogleスプレッドシートとZapierを用いた勉強会チームのリマインド自動化(Googleスプレッドシート編)

こんにちは!インフラエンジニアの森田です!

この記事はEnigmo Advent Calendar 2024の11日目の記事です。

私は社内の勉強会チーム(DeveloperRelationsチーム)としても活動しており、 人力で行なっていたリマインドをZapierで自動化したのでそのご紹介をしたいと思います。

今回は毎週金曜日に実施している軽い勉強会(Hacker'sDelight)のリマインドの自動化を例に記載します。

元々は以下のようなスケジュール管理シートがあり、こちらを人の目で見て翌月の発表者やその週の発表者にSlackでリマインドを送るという運用をしていました。

ただずっと人力でリマインドを送るというのはツラいため、社内で自動化ツールのZapierを契約しているため折角なら自動化してしまおうということで自動化に着手しました。
調べながらZapを作成する中で意外にZapierの日本語のドキュメントが少なかったため、この記事が備忘録かつ同じような自動化をやりたい方の参考になればと思います。

今回の自動化を構成しているのは大きく分けて以下の3要素になります。

  • スケジュール管理シート(パブリック)
  • リマインド管理シート(クローズド)
  • Zap

全ての要素の解説を1記事で行うと長くなってしまうため今回は「スケジュール管理シート」と「リマインド管理シート」の解説を行います。 Zapの解説は12日目の記事で解説したいと思います。

スケジュール管理シート(パブリック)

以下が「スケジュール管理シート」です。 基本的に上で貼ったスケジュール管理シートと同様ですが、「リマインド管理シート」でSlackIDをメールアドレスから自動検索するために列が追加されています。 こちらのシートは基本的にパブリックになっており、一般メンバーもHacker'sDelightのカレンダーとして見ることができます。 全て手動で管理しているので特に言及するところはありませんが、この後の解説で関連してくる列は以下となります。

  • 内容
  • 発表者1,2(敬称略)
  • 発表者1,2メアド
  • 日程

リマインド管理シート(クローズド)

「リマインド管理シート」は「Zapier通知用」と「Slackメンション用IDリスト」の2つのシートからなります。

Zapier通知用

このシートは「スケジュール管理シート」から参照した値から計算して自動的に埋められるため、手動での管理は不要になっています。 それぞれの列の解説をします。

  • 日程
  • 発表内容
  • 発表者1,2
  • 発表者1,2メアド

これらの列は全て「スケジュール管理シート」からそのまま参照しています。 別のスプレッドシートから値を参照してくるにはIMPORTRANGE関数を使用します。

例)
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxx","2025!G4")

また、発表者の部分は敬称をスプレッドシート側で入れておきたいのでカスタム数値形式で「@さん」と入れることで自動で敬称を付与するようになっています。

  • 開催月

MONTH関数を用いて何月に開催されるのかを抽出しています。 これは翌月の発表をまとめてリマインドするのに使用します。

例)
=MONTH(A2)
  • 当日までの日数

日程のセルからTODAY関数で今日の日付をマイナスすることで発表当日まで何日なのかを算出することができます。

例)
=A2-TODAY()
  • メンション用ID

VLOOKUP関数で「Slackメンション用IDリスト」から発表者メアドに対応した IDを取得してきています。 元々人力でメンション用IDを探してコピペしていましたが辛すぎるうえミスが分かりずらいため、IDは自動で取得されるようにした方が良いと思います。

例)
=VLOOKUP(F2,'Slackメンション用IDリスト'!$A$3:$B$1435,2,FALSE)
  • 開催フラグ

発表があるのかないのかを判別するためにISBLANK関数で発表内容のセルを空白判定しています。 また、そのままだと発表がある(セルが埋まっている)とFALSEと判定され違和感があるため、NOT関数で逆の論理値が返されるようにしています。

例)
=NOT(ISBLANK(D2))

Slackメンション用IDリスト

以下のドキュメントを参考にメンバーリストを取得すると、ユーザーのメールアドレスとUserIDが記載されたcsvファイルが取得できます。
ワークスペースのメンバーリストをダウンロードする

こちらのシートはcsvの内容をそのままコピペしたものです。 Zapierを使ってユーザーにメンションをする際にはこのUserIDが必要になります。
注意が必要なのはこのメンバーリストがSlackのオーナーまたは管理者権限を持っていないと取得できない点です。
不特定多数が見られる場所に書かれるのは好ましくないため、「リマインド管理シート」の参照権限はクローズドで必要のあるメンバーのみが見られるようにするべきです。

Zapierでリマインドを行うためのインプットとなるスプレッドシートの解説は以上となります。
明日の記事では実際にリマインドを行う部分であるZapの解説を行います。


株式会社エニグモ すべての求人一覧

hrmos.co