【TECH BLOG #57】Slackワークフロー活用例の紹介

グリーエンターテインメント株式会社にてUnityエンジニアをしておりますあろまです。
今回は弊社及び現在担当しているプロダクトにて使用しているSlackワークフローの活用例についての紹介をさせていただきます。
※なおSlackワークフローはSlack有料プランのみ利用可能となっておりますのでご注意ください。
Slackワークフローとは
Slackワークフローとは、Slack上で使用できる定型的なタスクを自動化できるツールです。
Slackワークフローを使うメリットとして下記のようなところがあります。
・特別なツールやサーバー等が不要でSlack内で完結できる
・SlackAPI等を使った難しいプログラムは不要
・GUI操作のみで誰でも簡単に作成を行うことができる
・できることが多い
業務の効率化ができたり複雑な作業からヒューマンエラーを排除することができたりと、私自身もかなり使用しております。
ワークフロー作成方法
今回はリンクを押すことでチャンネルにメッセージを送信するだけのワークフロー作成の紹介です。
詳しい使い方/作り方については公式HPでも紹介されておりますので、是非そちらをご覧ください。
ワークフローの作成には『ワークフロービルダー』というSlack内のツールを使用します。
1.タブバーの『その他>自動化』を選択し、メニューの『ワークフロービルダー』を選択してワークフロービルダーを開く


2.『ワークフローを作成する』を選択し、『Slack内のリンクから』を選択する

3.ステップの『メッセージ>チャンネルへメッセージを送信する』を選択し、送信するチャンネルとメッセージを設定する

4.『完了』を押しワークフロー名等を設定する
5.ワークフロー開始のURLが発行されるため、直接実行したりSlack Canvasに設定してワークフローを実行する
上記でワークフロー作成完了です。
ワークフローのURLはCanvasへの設定がおすすめです。他メンバーも使用することができ、スマホのSlackアプリからも使用することができるので便利です。
ワークフロー活用例
今回は私が参画しているタイトルにて使用しているワークフローをいくつか紹介します。
複数チャンネルへの一括インバイトワークフロー
新規メンバーが新たにチームへ参画した際に使用し、複数チャンネルへ一気にメンバーインバイトを行うツールです。
現在私の参画タイトルでは30件以上のSlackチャンネルが使用されており、本来であれば手動で1つずつチャンネルインバイトをしなくてはなりませんが、このツールを使用することで漏れ/間違いなく一瞬でインバイトが可能です。

勤務開始確認ワークフロー
弊社では在宅とオフィスで分かれて仕事をすることもあり、毎朝メンバーがどこで勤務を開始しているのかを確認するためにワークフローを活用しています。
複数のワークフローに分けて実装されており、さらにはGoogle Sheets連携や一部GASを使用しております。
Google Sheetsへの書き込みは全てSlackワークフローから行っておりますが、Google Sheetsからのデータ取得はGAS(Google Apps Script)にて行われております。
また、昼休憩・離席・退勤・遅刻・休み連絡等も同様にワークフローが準備されています。
1.毎日朝イチに勤務開始確認用のメッセージを自動投稿するワークフロー。

2.上記投稿にSlackリアクションをつけることで、スレッドに勤務開始を投稿してくれるワークフロー。その際にGoogle Sheetsへも勤務開始情報が追記されます。


3.勤務開始時間にGASにて全メンバーの勤務情報をまとめてSlackに送信する。
※ワークフローによるスプレッドシートからの複数セル取得は実装ができなかったためここだけGASを活用しております。
※サンプルコードはそのままでは動かないため調整が必要です。

/** * 毎日の勤怠まとめを自動投稿する * 平日のみSlack投稿が実行される * その日のトリガーは実行後に削除されて翌日のトリガーがセットされる */ function sendDailyStatus() { //前回のトリガーを削除して次の日のトリガーをセットする const triggers = ScriptApp.getProjectTriggers(); for(let i=0;i<triggers.length;i++){ if(triggers[i].getHandlerFunction()==='sendDailyStatus'){ ScriptApp.deleteTrigger(triggers[i]); } } // 翌日のトリガーをセットする let today = new Date(); today.setDate(today.getDate()+1); today.setHours(9); today.setMinutes(35); ScriptApp.newTrigger('sendDailyStatus').timeBased().at(today).create(); var calJa = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com'); // 平日であれば勤怠まとめをSlack送信する if (today.getDay() != 0 && today.getDay() != 6 && calJa.getEventsForDay(today).length <= 0){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(STATUS_SHEET_NAME); var message = ''; for (var i = 2; i <= sheet.getLastRow(); i++) { // 1:名前、2:勤務状況を取得してメッセージに入れる message += sheet.getRange(i,1).getValue() + ' ' + sheet.getRange(i,2).getValue() + `\n`; } var data = { "channel" : "勤怠チャンネル", "username" : "勤怠投稿", "text" : message, }; var payload = JSON.stringify(data); var options = { "method" : "POST", "contentType" : "application/json", "payload" : payload }; UrlFetchApp.fetch(WEB_HOOK_URL, options); } }
仕様質問ワークフロー
開発時の質問を行うためのワークフロー。
ワークフローにて質問を投稿でき、回答もワークフローにて作成されたボタンから行うことができるツールです。
また、質問/回答内容はGoogle Sheetsにも自動的に登録されます。
よくある話ですが、質問したことが他の投稿で流れてしまったり、質問した結果変更された仕様が仕様書に更新されなかったりといった問題を解決するために作成されました。

チャンネルインバイト時の質問
こちらはGREEグループ内で活動をしている部活動で主に使用しているワークフローです。
部活用のSlackチャンネルに新しいメンバーがインバイトしてきた際に、そのメンバーに向けて好きなもの等を回答できるフォームを表示し回答してもらうようになっています。
これにより新メンバーと関わるきっかけを作ることが出来ております。

まとめ
今回紹介したワークフローはあくまで一部であり、これら以外にも様々な使い方で自動化/効率化をすることができます。
Slackワークフローは簡単に自動化/効率化を進めることができるとても便利なツールです。
普段困っていることや手間になっていること等がもしあれば、これを機にワークフローで自動化/効率化を是非行ってみてください。
以上、最後まで読んでいただきありがとうございました。
本件に関するお問い合わせ先
グリーエンターテインメント株式会社 広報担当
東京都港区六本木6-11-1 六本木ヒルズゲートタワー
E-mail:info-ent@ml.gree.net