Google Apps Script を使って Slack のスラッシュコマンドを作る

Slack というチャットツールには、サードパーティのアプリや「スラッシュコマンド」と呼ばれるコマンドを追加できる。そしてそれらは自作することもできる。

今回はバックエンドに Google Apps Script (GAS) を使って、投稿内容をオウム返しするだけの、シンプルなオリジナルのスラッシュコマンドを作ってみる。

目次

GAS プロジェクトを作り URL を発行する

まずはスラッシュコマンドを受け取って処理を行うための GAS プロジェクトを作る。GAS プロジェクトの新規作成方法は以前の記事で紹介したとおり。

新規プロジェクトを作ったら、以下のように doPost() 関数を実装しておく。

function doPost(event) {
  // Slash Command のメッセージ部分を取得する
  const text = event.parameter.text;
  // Slack へ応答メッセージを返す
  const response = {
    text: 'あなたは「 ' + text + ' 」と言いました'
  };
  return ContentService
    .createTextOutput(JSON.stringify(response))
    .setMimeType(ContentService.MimeType.JSON);
}

実装できたら、メニューバーより「公開」→「ウェブアプリケーションとして導入」を選ぶ。

ウェブアプリケーションとして導入

表示されたダイアログにて次のように設定する (以下のキャプチャは2回目以降の公開時の画面なので、初回は少し見た目が違うかも)。

設定

New バージョンにする

コレで「導入」または「更新」ボタンを押下すると、次のように「ウェブアプリケーションの URL」が発行されるので、コレをコピーしておく。

URL が分かる

「導入」ボタンを押下した時に、「このアプリは許可されていません」という SSL 証明書エラーみたいな画面が表示されるかもしれない。自分も一度遭遇したことがあるが、画面最下部より信頼して続行する的なリンクを押して進めていけば大丈夫。

以上で、「この URL に対して POST リクエストを投げれば JSON 形式でレスポンスが返ってくる」という GAS プロジェクトが出来上がった。

スラッシュコマンドを作る

次に、自分の Slack チャンネルに適用するスラッシュコマンドを作成する。

上のページに飛び、「1. Creating a Slash Command」というセクションから「Create your Slack app」ボタンを押下する。

Slash コマンド

すると「Create a Slack App」というダイアログが表示されるので、適当な Slack App 名と、適用するワークスペースを選択する。

作成する

作成できると、「Your Apps」一覧画面に自分が作ったアプリが表示される。このアプリ名リンクを押下して、次の設定に移る。

Apps 作った

「Basic Information」画面に移動したら、「Add features and functionality」の中から「Slash Commands」を選ぶ。

選択する

「Slash Commands」画面に移動したら「Create New Command」ボタンを押下する。

新規コマンドを作る

ココでスラッシュコマンドを定義する。

埋めていく

コマンドが作成できたら、左メニューの「Settings」欄から「Basic Information」を選んで元の画面に戻り、今度は「Install your app to your workspace」欄の「Install To Workspace」ボタンを押下する (以下のキャプチャは押下後なので「Reinstall App」と書かれているが同じ)。OAuth Access Token が発行されるが、今回は特に気にしなくて OK。

Reinstall App

スラッシュコマンドの作成作業はココまで。

動作確認

ココまでの作業を行えば、Slack のワークスペースで自作のスラッシュコマンドが打てるようになっているはずだ。

使えるようになった

GAS の方はパラメータ (スラッシュコマンド以降の文字列) を受け取って Slack にレスポンスするように実装しているので、/【コマンド名】 【適当な文字列】 と入力して送信してみよう。自作のアプリが あなたは「【適当な文字列】と言いました」 と応答してくれるはずだ。

以上

簡単な例だったが、コレで自作のスラッシュコマンドの作り方が分かった。次回はもう少しコマンドらしく処理を行わせてみよう。