LoginSignup
6
5

More than 3 years have passed since last update.

GASでslackゴミ出し抽選botを作成する(設定編)

Last updated at Posted at 2019-06-09

本記事について

備忘のため、slackにGASで作成したBotを追加する際の手順の記録に重きを置いています。
GASに限らず、slackのbotを作る際に設定場所の参考として役立てて頂けると幸いです。
botのコードの処理内容に関してはコード解説編をご覧下さい。

botの動き

毎日定刻にslackの「特定のチャンネルに属するメンバーから1名」をランダムに選択し、ゴミ出しを促すメッセージを投稿するbotをGAS(GoogleAppsScript)を用いて作成します。
スクリーンショット 2019-06-09 17.55.54.png

  • 「完了しました」ボタンを押した場合は元の抽選投稿が「ありがとうございましたメッセージ」にupdateされる
    スクリーンショット 2019-06-09 17.56.04.png

  • 一定時刻までに完了報告がされない場合は、リマインド投稿がされます。
    スクリーンショット 2019-06-09 18.07.16.png

  • メッセージにはinteractiveな再抽選実行のボタンがついており(参考:slack interactive messagesリファレンス)、
    再抽選の理由を入力するダイアログが出現し、入力された理由が投稿&再度抽選が実行されます。
    スクリーンショット 2019-06-09 17.58.52.png

  • 抽選実施日が祝日か否かを判定し、祝日には抽選投稿が実施されないようにする。

  • 再抽選で「同じ人が再び当選する」ことを防ぐために、最新の当選者は抽選から除外されます。

実装手順

1. slack appの初期設定

1-1.app新規作成

https://api.slack.com/apps にアクセスし、Create New Appを押す。
create new app.png

1-2.app名称設定

Create a Slack Appというダイアログが表示されるので、
スクリーンショット 2019-06-09 15.36.06.png
・App Nameに任意の名前を入力
・Development Slack Workspaceはプルダウンからworkspaceを選択
・右下のCreate Appを押す。

1-3.権限付与

Basic Information→Add features and functionality
→Permissions→OAuth&Permissionsの画面に遷移
→Scopesの項目内のSelect Permission Scopesで
 ・Access information about user's public channels
 ・Send messages as (App name)
の2つの権限を追加し、Save Changesを押す。
スクリーンショット 2019-06-09 15.42.04.png

1-4.workspaceに追加・OAuth token取得

画面上部にスクロールし、Install App to Workspaceを押す。
スクリーンショット 2019-06-09 15.34.08.png
確認画面が出るのでInstallを押す。
スクリーンショット 2019-06-09 15.48.06.png
OAuth Access Tokenが表示されるので、この値をメモしておく。
スクリーンショット 2019-06-09 15.51.25.png

2. GASの設定

Googleドキュメントを新規に作成し、ツール→スクリプトエディタを押してスクリプトエディタを開く。
スクリーンショット 2019-06-09 16.01.14.png

2-1.GASライブラリ追加

リソース→ライブラリから
「Moment.js (MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48)」
「SlackApp (M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO)」
の2つのライブラリを追加する。
(追加手順は外部サイト:いつも隣にITのお仕事 及び Slack BotをGASでいい感じで書くためのライブラリを作った を参照)
スクリーンショット 2019-06-09 16.13.06.png

2-2.GASアプリケーション公開

ここまででGASはライブラリを追加したのみで処理を1文字も書いていませんが、slackに設定するアドレスを取得するため公開します。
スクリプトエディタ上部の公開→「ウェブアプリケーションとして導入」を押す。
スクリーンショット 2019-06-09 16.17.36.png
アプリケーションにアクセスできるユーザーを「全員(匿名ユーザーを含む)」に変更して、導入を押す。
許可を確認するダイアログが出ますが、許可して進めて行きます。
公開が完了すると「現在のウェブアプリケーションのURL」が表示されるのでこのURLをメモします。
スクリーンショット 2019-06-09 16.18.13.png

3. 再度Slackの設定

https://api.slack.com/apps にアクセスし、手順1で作成したappを開きます。

3-1.slackからPOSTする先のURL設定

BasicInformation→Add features and functionality
→Interactive Componentsと進み、Interactivityをonにします。
するとRequestURLを入力するフォームが出現するので、2-2.で取得したURLを入力します。
スクリーンショット 2019-06-09 16.36.39.png
フォームにURLを入力してエンターキーを押すと(←重要)画面右下のSaveChangesボタンがアクティブになるので、押す。

3-2. VerificationTokenの取得

appのBasicInformation→AppCredential内の、
VerificationTokenの値をメモします。

4. 再度GASの設定

Googleスプレッドシートからスクリプトエディタを開きます。

4-1. tokenの登録

画面左上のファイル→プロジェクトのプロパティを押す。
「スクリプトのプロパティ」タブに、
プロパティ→ OAuth_token   値→ 1-4.で取得したOAuth tokenの値
プロパティ→ verified_token 値→ 3-2.で取得したVerification tokenの値
という2行を追加して保存します。(プロパティ名はあくまで一例です)
スクリーンショット 2019-06-09 16.48.04.png

4-2. コード追加

スクリプトエディタのコード.gsに下記githubリンクのコードを貼り付けます。
githubリンク
必ず、1行目の channelId の値を実際に抽選を実行するslackのチャンネルIDに書き換えて下さい。
※channelIDはブラウザで対象のチャンネルを開いた際のアドレスが、
https://{{workspace名}}.slack.com/messages/{{channelID}}/
なので{{channelID}}の部分の値を使う。

4-3. スクリプト更新

左上のファイル→版を管理→
・テキストエリアにコメントを記入
・新しいバージョンを保存を押す
→ダイアログ下部のOKを押す。
スクリーンショット 2019-06-09 17.00.46.png

4-4. 公開版更新

公開→ウェブアプリケーションとして導入→プロジェクトバージョンを最新のものにして、ダイアログ下部の「更新」を押す。
スクリーンショット 2019-06-09 17.04.00.png

4-5. トリガー追加

編集→現在のプロジェクトのトリガー→画面右下の「トリガーを追加」
→下記画像のように午前8時〜9時に関数が実行されるように登録。
スクリーンショット 2019-06-09 17.47.45.png

以上となります。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5