SlackのコマンドをGoogle Apps Scriptでサクッと作成


概要

① GoogleAppsScriptの準備
今回は、todayと打つと日付+曜日を返してくれるコマンドを作成してみます。

return_post.js
function doPost(e) {
  var date = new Date();
  var dayOfWeek = date.getDay();
  var dayOfWeekStr = ["日", "月", "火", "水", "木", "金", "土"][dayOfWeek];
  var today = Utilities.formatDate(date, 'Asia/Tokyo', 'YY/MM/dd【'+ dayOfWeekStr +'】');
  var res = {response_type: "in_channel", text: today};
  // 公式ページのリファレンスだと以下のようになっている。
  // attachmentsをつける場合は以下のようにする。
  // var res = {
  //   "response_type": "in_channel",
  //   "text": "Hello,World!",
  //   "attachments": [{"text":"Attachments1"}]
  // }
  return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}

② GoogleAppsScriptの公開
「公開」→「ウェブアプリケーションとして導入…」

設定を以下のようにして公開する

プロジェクトバージョンは毎回最新とする
・「次のユーザーとしてアプリケーションを実行:」は自分を選択する
・「アプリケーションにアクセスできるユーザー:」は全員(匿名ユーザーを含む)を選択する

公開すると、URLが表示されるので、それをメモしておく。

② Slackの準備
②-1. SlackのAPIページ(https://api.slack.com/)へアクセスし、「Start Building」を選択

②-2. アプリの名前とアプリ導入先のワークスペースを指定
(アプリの名前≠コマンドなので、適当でよい)

②-3. 作成するアプリの種類を指定

今回は「Slash Commands」を指定

②-4. 「Create New Command」

②-5. コマンドの設定を入力

つまることはないと思うが、各英語の説明は以下

英語 意味
Commandコマンドの文字
Request URLこのコマンドを入力した時にPostする先 httpsの必要があるので注意 今回は先ほど公開したURLを入力
Short Descriptionコマンドの説明 コマンドUsageの右側に灰色で表示される
Usage Hintコマンドを途中まで打ったときに出てくる説明 [ ] で囲ってあげると丁寧

②-6. コマンドをワークスペースにインストール
個人的なハマりポイントでした。
ここまでの手順でコマンドの作成ができたのですが、コマンドをワークスペースにインストールする作業が必要となります。
Settingsの「Basic Information」から「Install your app to your workspace」の
「Install App to Workspace」をクリック




さいごに「Authorize」でインストールすることができます。


動作確認

以上のことをやった上で、Slackで /todayというコマンドを打ってみます。

今日の日付が帰ってくることがわかると思います。

まとめ

ポイントは以下の通り

・ウェブアプリケーションとして公開するときの設定

次のユーザーとしてアプリケーションを実行: 自分([自分のメールアドレス])
アプリケーションにアクセスできるユーザー: 全員(匿名ユーザーを含む)

GoogleAppsScriptを更新したときはプロジェクトバージョンを新しくする
・GoogleAppsScriptはdoPost関数を使用する
・ユーザーに公開する場合はjsonの中に "response_type": "in_channel"を入れること
・コマンドの作成だけでなく、コマンドのインストールをすること

結構ハマりポイントが多いですが、頑張ってください。