当番制のタスクをチャットワークに自動通知するbotを作ってみた。GAS × Chatwork API
こんにちは、2017年度新卒社員のishishoです。 新卒社員には毎日行うちょっとした仕事があるのですが、これを1週間交代の当番制でやることにしています。 基本的に当番の交代は休み明けの月曜日。そうなると・・・
- 先週誰がやっていた?今週の当番は〇〇さんで合ってる? という確認が入る
- そもそもみんなタスク自体を忘れている
という状況にしばしば陥ることがあり、 「誰が当番かを通知してくれるbotがあれば・・・」と思うようになりました。 そこで、インターネットで探してみると、Google Apps Script(以下GAS)の存在を見つけたので、GASを用いてbotを作成することにしました。
準備:Googleスプレッドシート
開発環境の準備や設定はこちらの記事を参考にしてください。 なお、今回は担当者や通知回数の管理のためにGoogleスプレッドシートを使用します。 新規スプレッドシートを準備し、構成は以下のようにしました。
次に、スプレッドシートからGASのエディタを表示させます。
「ツール」→「スクリプトエディタ」を選択するとGASのエディタが表示されます。 ひとまず準備は以上になります。
開発:GASのソースコード
GASで記述したコードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function myFunction() { var client = ChatWorkClient.factory({token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}); //チャットワークAPIトークンを記載 var mySs = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得 var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得 var lastRow = mySheet.getDataRange().getLastRow(); //シートのデータが入っている最後尾の行取得 var index = mySheet.getDataRange().getValues(); //シート内データ取得 var date = new Date(); var dayOfWeek = date.getDay(); var memNum = index[1][0]; //スプレッドシートに記録してあるメンバーNoを取得 var doNum = index[1][1]; //スプレッドシートに記録してある通知完了回数を取得 const MEMRESET = 1; //担当メンバー初期化 const DAYRESET = 0; //完了日数初期化 const MAX = 7; //任期満了日数 client.sendMessage({ room_id:xxxxxxxxxxx, //送信するルームIDを記載 body: '[info][title]当番通知![/title]今週の当番は、'+ index[memNum][4] +'さんです。\nよろしくお願いします(bow)[/info]'}); doNum++; //通知完了したので日数カウント増加 if(doNum == MAX){ doNum = DAYRESET; //1週間完了したら日数初期化、次の担当へ memNum++; if(memNum == lastRow){ memNum = MEMRESET; //最後の担当者まで終わったらまた最初の担当者へ } } mySheet.getRange(2,1).setValue(memNum); //最終的な担当者インデックスをスプレッドシートに記録 mySheet.getRange(2,2).setValue(doNum); //日数カウントをスプレッドシートに記録 } |
メンバーが増えたときのことも想定
ちなみに、このコードでは、担当が最後の人まで終わったかどうかを、スプレッドシートの最終行を参照させることで判断するようにしています。 よって、たとえ当番のメンバーが増えたとしても、スプレッドシートの「メンバーNo」と「名前」の欄に書き加えるだけで、コードを編集することなく運用し続けることが可能です。
実行:チャットワークに通知
早速ですが、上記の画像のようなメニューバーの黒い三角の実行ボタンを押して、チャットワークに通知させてみます。
このようにbotが今週のタスク担当を通知してくれました!
スプレッドシートの方も確認してみると、完了日数が+1されています。
実行ボタンを押した時に許可を求められた場合は?
三角の実行ボタンを押した時に許可を求められた場合は、まず「許可を確認」を選択。
左下にある詳細をクリック。 すると下にスクロールできるので、「プロジェクト名(安全ではないページに移動)」というリンクをクリック(自身のプロジェクトであるため安全です)。 これで実行を通すことができます。
トリガーの設定を行う
手動での実行で通知させることができたので、今度は通知のタイミングを設定して自動化させていきます。 三角の実行ボタン左隣の時計のボタンを押してみましょう。
すると、このようなトリガー設定画面になります。 今回の実装では朝の時間帯に通知するよう設定していますが、通知させたい内容によって調整できます。
1週間後・・・
しっかりと指定された時間帯に通知され、当番もAさんからBさんへ交代しています!
スプレッドシート上でも念のため確認。問題なく変更されていました。
まとめ
数値の管理はスプレッドシートで行ったり、通知のタイミングはトリガーで調節できたりと、思った以上に簡単に作ることができました。 このようにGASはとても便利なので、ぜひ触れてみてください!