SlackとGoogle Apps Scriptで定時作業のリマインダーをお手軽作成

はじめまして。今年4月に新卒で入社しました、ゆうみです。

実家を出て半年が経ち、一人暮らしにすっかり慣れてきました。仕事にもだんだんと慣れてきましたが、まだまだ目の前の業務をこなすことで精一杯です。

さて、そんな業務の中に各システムの監視業務があります。監視業務にはいくつか種類があり、その1つに定時作業があります。これは営業時間内の1時間毎に実施します。1時間毎となると、他の業務をしているとすっかり忘れてしまうかもしれません。そこでリマインダーツールを使おうと探しました。しかし、定時作業は担当者4人が日替わりで実施しています。担当でない日にはリマインダーの通知を止めたいのですが、いちいちリマインダーの設定をするのは面倒です。さらに、担当を交代することもあり、その度に設定するのもやはり面倒です。

そこでSlackとGoogle Apps Scriptでリマインダーを自作することにしました。どちらも以前の記事で紹介しています。Slackについてはこちら、Google Apps Scriptについてはこちらから参照できます。この2つのツールを使えばとてもお手軽にリマインダーを作成できるのでご紹介します。今回は、より分かりやすくするために、私1人だけのリマインダーの作成法をご紹介します。

管理表の準備

日次作業担当者管理表

リマインダーツールを作る前に、まずGoogleスプレッドシートで定時作業担当者の管理表を作成します。私たちは、現在次のような管理表を使っています。

3行目に書かれている人がその日の定時作業担当者です。その日の定時作業が済んだら4行目に〇を付けます。ここでポイントとなるのは担当の日に名前が書いてあることです。これにより自分が担当かどうかを自動で判定することができます。

リマインダーの処理の流れは次の通りです:

  1. Google Apps Scriptでその日が担当かどうか判定します。
  2. 担当の日ならばSlackに通知を送信します。
  3. 1~2を1時間ごとに繰り返します。

たったこれだけの単純な処理ですが、1度作ってしまえばいちいち設定しなおす必要がなくなるのでとても便利です。では、さっそくリマインダーの作成に移ります。

リマインダーの作成

ステップ1: Slackの準備

まず、Slackで通知を受け取る準備をします。通知を受け取るには、Slackのサービスである「Incoming WebHooks」を利用します。

  1. Slackにサインインして、チームのメニューから「Apps & integrations」を選びます。
    Slackトップ画面Slackメニュー
  2. Incoming WebHooksの編集画面を開き、「Add Configuration」をクリックします。
    Slack App DirectoryIncoming WebHooks
  3. 通知するチャンネルを選択し、「Add Incoming WebHooks Integration」をクリックします。今回は私個人のプライベートメッセージに送ります。もちろん、どのチャンネルにも通知できます。
    新規Incoming WebHooksの追加
  4. 「Webhook URL」にあるURLをコピーします。このURLはスクリプト作成時に使用します。
    Webhook URL

ステップ2: スクリプトの作成

次に、Google Apps Scriptで担当の日かどうか判断し、Slackに通知するスクリプトを作成します。スクリプトエディタの開き方は以前の記事の「スクリプトエディタを開く」をご参照ください。このスクリプトを1時間おきに自動実行する設定は次のステップで説明します。スクリプトの処理の流れは次の通りです:

  1. スクリプト実行時の日付をもとに、管理表からその日の担当者の名前を取得します。
  2. スクリプト実行時の時間が営業時間内であり、その日の担当者の名前が自分の名前と一緒ならばSlackに通知します。
    • 通知は、「リマインダー」という名前で、「@yumi 定時作業をしましょう」という内容です。

具体的なスクリプトは下の画像の通りです。今回は関数名をsendToSlackとし、営業時間を10時から18時までとしました。

ステップ3: 自動実行の設定

最後にステップ2で作成したスクリプトを1時間おきに自動実行する設定をします。実は、Google Apps Scriptではこの設定がとてもお手軽にできます。

  1. スクリプトエディタ上部のメニューから時計のアイコンをクリックします。
    トリガーの設定1
  2. トリガーの一覧が表示されます。まだトリガーが登録されていなければ「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」をクリックするとトリガーを追加できます。
    トリガーの設定2
  3. トリガーの「実行」と「イベント」を下の画像のように設定して保存ボタンをクリックします。
    トリガーの設定3

リマインダー完成

以上でリマインダーが完成しました。あとは、定時作業の時間になって通知が来るのを待つだけです。もちろん他の業務をしながら待ちましょう。しかし、最初の通知は、来るのを今か今かと待っているのもいいかもしれません。私は定時作業の1分前からじっと最初の通知が来るのを待っていました。

ここで注意していただきたいことは、例えば今回リマインダーの通知時間の範囲を10時から18時に設定しましたが、時間主導型トリガーの仕様上、10時ちょうどや11時ちょうどにリマインドが来るとは限らないことです。(参考:Installable Triggers | Apps Script | Google Developers)したがって、厳密に時間が決められている作業へのリマインダーとしては向いていません。

最後に

いかがでしたか?今回はとても単純なリマインダーを作りました。工夫次第では、例えば

  • 自動実行の間隔を1分おきにして通知時間の精度を高くする
  • 希望する人にもリマインダーを送る
  • 目覚まし時計のスヌーズ機能のように、通知に気づかなかったときのために5分後にもう1度通知をする機能を付ける
  • 前日のチェック欄に〇がついてない人に「〇が付いてないよ!」と通知をする
  • Slackの通知をカラフルにする

といったこともできます。みなさんもぜひ自分なりのリマインダーを作ってみてください。