SlackのスラッシュコマンドとGoogle Apps Scriptで簡単にくじ引きをつくる

ブログメインビジュアル
こんにちは、エンジニアの鞠谷です。

Slackのスラッシュコマンドはご存知でしょうか?
たとえばSlackの入力スペースで

open [チャンネル名]

と打つとそのチャンネルを開いてくれたりする機能です。
他にも様々なものがデフォルトで用意されています。

このスラッシュコマンドは自作して追加できるので、その方法を解説します。



目次

どんなものをつくろう

まずは仕様を書き出してみます。

  • コマンド名は /kuzibiki
  • 引数は A,B,C... のようにスペースなしカンマ区切りで要素を並べる
  • 出力はランダムに選ばれた要素(のみ)
(入力) /kuzibiki A,B,C
(出力) A
  • 引数を指定せずに投稿すると使い方が帰ってくる
(入力) /kuzibiki
(出力) (例)/kuzibiki A,B,C

こちらをつくっていきます。

Slackアプリをつくる

まずはSlackワークスペースにログインしてSlackアプリ作成ページを開きます

Create an app

From scratchを選択します

Name app & choose workspace

アプリケーションの名前を入力してワークスペースを選択します

アプリケーションが作成されます

Verification Tokenをしらべる

Basic InformationのVerification Tokenをどこかにコピーしておきましょう

Verification Token

Google Apps Scriptをつくる

GoogleドライブからGoogle Apps Scriptをつくります

function doPost(e) {
  // トークンで認証
  var verificationToken = e.parameter.token;
  if (verificationToken != 'xxxxxxxxxxxxxxxx') { 
    throw new Error('Invalid token');
  }
  const text = e.parameter.text;
  // パラメータに何も入っていなかったら使い方を返す
  if (!text) {
    var res = {response_type: "in_channel", text: "(例)/kuzibiki A,B,C"};
    return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
  }
  // パラメータに値が入っていたらランダムに1つ返す
  const textArray = text.split(',');
  const selectedVelue = textArray[ Math.floor( Math.random() * textArray.length ) ] ;
  var res = {response_type: "in_channel", text: selectedVelue};
  return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}

verificationTokenに先程コピーした値を入力してください

ここで1つ解説しておきます。

response_type: "in_channel" とすることで打ったコマンドおよび結果が自分だけでなく全体に表示されます。

Google Apps Scriptをデプロイする

作成したScriptをデプロイします

deploy

デプロイから新しいデプロイを選択します

deploy

必要な情報を入力してデプロイを選択します

deploy complete

デプロイが完了しました。ウェブアプリのURLを控えておいてください。

スラッシュコマンドをつくる

ここまで来たらあと少しです
ダッシュボードの左メニューにあるFeatures > Slash Commandsを選択します。

left menus

Create New Commandsを選択します。

create new commands

以下のような感じで入力します
Request URLには先程コピーしたウェブアプリのURLを入力してください

create new commands

Saveをクリックします

ワークスペースにインストールする

Basic InformationからInstall to Workspaceを選択します

install to workspace

許可するをクリックします

install to workspace

つかってみる

こんな感じで使用できます

use

おわりに

このように簡単に自作スラッシュコマンドをつくることができます。
ajikeエンジニアチームでは全員が入っている社内プロジェクトのレビュアー決めにくじ引きコマンドを使っています。
みなさんも何か自作してみてはいかがでしょうか?

この記事を書いた人 kikutani 2018年12月に中途入社したエンジニアです。最近はiOSを開発しています。
TOP