もふもふ技術部

IT技術系mofmofメディア

gasで朝会がちょっとスムージーになったよ

mofmofでは朝会をやっており、やること・こまっていること・俺トピを出勤した順に喋ってました。

課題

  • 出勤順が分かりづらいので、次誰?問題が発生する
  • 毎週火曜のリモートデーの時、適当に決める必要があった

解決策

メンバー全員をランダムで順番決めて、朝会時に自動でSlack通知する

前提

SlackとGoogle Appsは導入済みの前提とします

準備

  • Google App Scriptを用意する
  • 通知したいSlackチャンネルのincoming webhook URLを取得する
  • メンバー一覧(文字列)を取得する
    Slackの/whoで取得できます。generalチャンネルとかで実行すれば良さそうですね。

実装

  • ランダム並べ替え
    メンバーをランダムで並べ替える処理を書きます。 弊社の規模感と管理コストを考慮し、スプレッドシートは使わずにメンバー名は配列リテラルで記載します。

  • 並べ替えた結果をSlack通知する処理を書きます。 取得済のincoming webhook URLに並べ替えた結果をpostします。 gas上ではUrlFetchAppというライブラリが使えるようになっているので簡単ですね。

  • 定期実行にしたいのでスケジュール登録をします。 ただし時間単位で登録する場合1hの幅があるため、毎日何時何分に実行するという方法には向いてないです。 なので、スケジュール登録をする処理をスケジュール登録するという方法にします。

    • N時N分にスケジュール登録する処理 をfunctionで定義する
    • 上記をgasでスケジュール登録する(※実際にSlack投稿する1h以上前に設定しておく)
    • N時N分にスケジュール登録する処理 の中に使用済スケジュールを削除する処理も入れておくと良いと思います。

完成

setTrigger をgas上でスケジュール登録します

結果

slack-notify