4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

新人がGASを使ってSlackのスラコマとbotを作ってみた!

Last updated at Posted at 2020-08-31

この記事は株式会社富士通システムズウェブテクノロジーが企画するいのべこ夏休みアドベントカレンダー 2020の5日目の記事です。本記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません。

#はじめに
7月末で約4か月の研修が終わり、8月から配属となった新人がSlackで遊んでみました。
Slackのコマンドやbotを作ったことが無い、GASを触ったことが無い状態でも簡単に作成できたので作成手順をまとめてみます。

#今回やってみたこと
####コマンド作成
image.png
####ボタン選択式botの作成
image.png
####ボタンに合わせた画像表示
image.png

コマンドを叩くとボタン選択式botが出現し、ボタンによって表示される画像を変えています。
AWS LambdaやGoogle Cloud Functionsなどの有料サービスでも作成できますが、今回は無料で手軽に使えるGASを選びました。

#手順

  • Slack Appの作成
  • GoogleDriveの設定
  • GASでスクリプトを2つ作成
  • Slack AppとGASを連携

#Slack Appの作成
SlackAPIへアクセスし、Create New Appをクリックします。
image.png

bot名とbotを導入するワークスペースを入力します。
image.png

今回はtestAppを作ってみました。
image.png

####権限の設定
Basic Informationの右下にあるPermissionsをクリックします。
image.png

Bot Token Scopesにchat:writechat:write.publicを追加します。
image.png

####トークンの取得
Basic Informationの真ん中あたりにApp Credentialsがあります。
その中のVerification Tokenをコピーしてメモに残しておきます。
スクリーンショット (2).png

#####これでSlack Appの作成は完了です!

#GoogleDriveの設定
今回は選択したボタンに応じて画像を表示させたいので、あらかじめGoogleDriveに画像を保存しておきます。

####公開用URLの取得
botで画像を表示させるためには公開用URLの取得が必要になります。

  • 表示させたい画像を右クリック→共有可能なリンクを取得
  • リンクをコピーしてメモに残しておく
  • 制限付き→リンクを知っている全員に変更して完了
    image.png

####参照用URLの作成
先ほど取得した公開用URLを使用してもSlackで画像が表示されません。
そのため、メモに残しておいた公開用URLを参照用URLに書き換えます。

参照用URLの作成は以下の記事を参考にしました。
Google Drive上のファイルに直接アクセスする

#Google App Scriptでスクリプトを作成

####スクリプト1を作成
GASにアクセスし、新規プロジェクト作成します。

以下のコードを入力してください。
※★の部分には、Slack App作成時にコピーしておいたTokenを入力

スクリプト1のコード(クリックして開く)
function doPost(e) {
  var slack_token = '★'; //Verification Token
 
  if (slack_token != e.parameter.token) {
    throw new Error(e.parameter.token);
  }
  
  var data = {
    "response_type":"in_channel",
    //アタッチメント部分
    "attachments": [{
      "title": "好きな動物を選んでください",
      "text": "Please select animals.",
      "fallback": "animal", 
      "callback_id": "callback_button",
      "color": "#00bfff",
      "attachment_type": "default",
      "actions": [
        {
          "name": "dog",
          "text": "犬",
          "type": "button",
          "value": "dog"
        },
        {
          "name": "cat",
          "text": "猫",
          "type": "button",
          "value": "cat"
        },
        {
          "name": "rabbit",
          "text": "うさぎ",
          "type": "button",
          "value": "rabbit"
        }
        ]
      }]
  };
  return ContentService.createTextOutput(JSON.stringify(data)).setMimeType(ContentService.MimeType.JSON);
}

####GASを公開
コードの入力が終わったら公開ウェブアプリケーションとして導入を選択
image.png

Deploy as web app画面で以下を選択します。

Project version→New
Excecute the app as→Me(メールアドレス)
Who has access to the app→Anyone, even anonymous
スクリーンショット (3).png

Deploy または 更新をクリック後、表示されたURLをコピーしてメモに残しておきます。
スクリーンショット (4).png

#####これで1つ目のスクリプトが完成です!

####スクリプト2を作成
2つ目のスクリプト作成のため、再度GASで新規プロジェクトを作成します。

以下のコードを入力してください。
※☆にはGoogleDriveの参照用URLを入力

スクリプト2のコード(クリックして開く)
function doPost(e) {
  var payload = JSON.parse(e["parameter"]["payload"]);
  var value = payload["actions"][0]["value"];
  var dog = "☆"; //参照用URL
  var cat = "☆"; //参照用URL
  var rabbit = "☆"; //参照用URL
  
  if (value == "dog"){
    var reply = {
      "attachments": [
        {
        "title": "犬の写真",
        "fallback": "dog",
        "callback_id": "callback_button",
        "image_url": dog,
        "color": "#00bfff",
        "attachment_type": "default",
        }
      ]
    };
  }
  
  if (value == "cat"){
    var reply = {
      "attachments": [
        {
        "title": "猫の写真",
        "fallback": "cat",
        "callback_id": "callback_button",
        "image_url": cat,
        "color": "#00bfff",
        "attachment_type": "default",
        }
      ]
    };
  }
  
  if (value == "rabbit"){
    var reply = {
      "attachments": [
        {
        "title": "うさぎの写真",
        "fallback": "rabbit",
        "callback_id": "callback_button",
        "image_url": rabbit,
        "color": "#00bfff",
        "attachment_type": "default",
        }
      ]
    };
  }
    return ContentService.createTextOutput(JSON.stringify(reply)).setMimeType(ContentService.MimeType.JSON);
}

1つ目のスクリプトと同様に、Deploy→URLをコピーしておきます。

#####これで2つ目のスクリプトも完成です!

#Slack AppとGASを連携
####Slash Commandsの作成
Basic InformationのSlash Commandsをクリックします。
スクリーンショット (5).png

Create New Command画面でコマンドの名前や説明文を入力します。
RequestURLにはコピーしておいたスクリプト1のURLを入力
image.png

####Interactive Componentsの設定
Basic Information内のInteractive Componentsをクリックします。
無題.png

Interactive ComponentsをONにします。
RequestURLにコピーしておいたスクリプト2のURLを入力
image.png

####ワークスペースにAppをインストール
Basic InformationでInstall App to Workspaceをクリックします。
photo.png

#####確認画面が出てくるので許可するをクリックすれば完成です!

####動作確認
Slackでコマンドを叩いてみます。
image.png

をクリックします。
image.png

画像が表示されました!
再度コマンドを叩いて、をクリックしてみます。
image.png

猫の画像が表示されました!

うさぎをクリックすると、こんな感じです。
image.png

#終わりに
初めてSlackのコマンド・bot作成をしてみましたが、思っていたよりサクッと作れました。
今後はもう少し機能拡充したbotも作成してみたいです。

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?