SlackAppのOAuth & Permissionsとscope設定

SlackAppの設定で最初につまずいたのがOAuth & Permissions」の「scope(スコープ)だったので、scopeの設定について説明したいと思います。

 

scope(スコープ)とは?

SlackAppのscopeとは、コードを書くとき、その関数にのみ与えられる権限という理解で大丈夫だと思います。

 

まず、SlackAppは権限を与えないと何もできません。

投稿を読みこむことも、投稿することも、リアクションを読むことも、リアクションすることも、全て各権限の許可をしてあげないと動作しない仕様です。

 

そのため、投稿したり、リアクションしたりといったscopeという権限をSlackAppに与えてあげる必要があります

 

でも、「自分がしたいことをするために何の権限を与えたらいいのか」が分からないと権限も与えられないですよね。

ここで私はすごくつまずきました…。

 

Slackのメソッドを確認する

そこで、Slack側が用意してくれているメソッドの中に書いてくれているscopeを確認するといいです。

api.slack.com

 

初心者にとっては「いやメソッド(method)ってなに?」って感じだと思うんですが、簡単にいうと、これをしてくれってSlackAppにお願いするための決まりのようなものかなーと思ってます。

 

SlackAppは当然一人でに何かできるわけではないので、「これをしてくれ!」と頼む必要があり、そのときに呼び出す方法がメソッドになるわけです。

※ちゃんとした説明はほかの方のを見てください…!

 

とりあえずやってみたほうが早いと思うので、実際見てみましょう!

 

Slackのメッセージを取得したい場合のscope

例えば、Slackのメッセージを取得してスプレッドシートに自動で記載したい場合、SlackAppにメッセージを取得してもらわないといけないですよね。

 

今回は投稿を読み込みたいので、「Web API methods | Slack」で「history(履歴)」と検索してみましょう。

 

見たいのはメソッドなので、「Methods」をクリックします。

 

 

説明に「Fetches a conversation's history of messages and events.(会話のメッセージとイベントの履歴を取得します。)」とある通り、今回は投稿の履歴を見たいので「conversations.history」をクリックします。

 

 

見てみると、「Required scopes(必須スコープ)」が書いてありますね!

 

このscopeの権限をSlackAppに与えれば、botが「conversations.history」のメソッドを使えるようになり、メッセージを取得できるようになります!

 

ちなみに

昔は「conversations.history」ではなく、「channels.history」だったらしいんですけど、現在「channels.history」は廃止されているようです。

※「channels.history」はリプライの履歴も拾えたようなんですが、「conversations.history」ではできません…。

 

日本人からするとconversations(会話)ってなかなか馴染みがないというか、Slackだしposting(投稿)やmessage(メッセージ)じゃないのかって感じですけど、Slackのメソッドだとconversations(会話)みたいです…!

messageはEvent APIで使用しているので、メソッドは別のものを割りあたたのだと思いますが…。

 

Required scopes(必須スコープ)はどれを使えばいい?

「Required scopes」になにやらたくさんscopeが書いてありますが、どれを使用するかはメッセージをやりとりしているチャンネルによって異なります。

ここも参考にしたサイトに書いていなくて困ったので、覚えておくといいと思います。

  • 公開チャンネル:channels
  • プライベートチャンネル:groups
  • ダイレクトメッセージ:im
  • 複数人とのダイレクトメッセージ:mpim

 

bot token」と「user token」とは?

SlackAppはbotを動かすことも、ユーザーを動かすこともできます。

botbot自身がメッセージを投稿したり、リアクションしたりするのを想像するとわかりやすいと思います。

ユーザーを動かすというのはSlackAppが@takanashiでメッセージを投稿したり、リアクションしたりするということです。

ユーザーの指定はGAS側のコードで指定します。

 

 

今回はscopeの話でした。

メソッドもそうですが、使ってみないとなかなかピンとこないと思います…!

とりあえずbotを動かしてみたい方はこちらを参考にしてみてください!

 

gasbeginner.hatenablog.com

GASで期限をスプレッドシートからSlackに通知する【その1】

GAS初心者がスプレッドシートをもとにbotで期限をSlack通知した際、ここが困ったなーという部分が結構あったので、そのあたりを軸にまとめてみました。

そのため、同じく初心者で困っている人向けの記事です。

 

今回はSlack Appの作成についてです。

 

インデグレーションについて

今回のコードではIncoming WebHooksは使いません。

詳しくは後述する為なのことやらの人は読み飛ばして大丈夫ですが、ぐぐって出てくる記事が高確率でIncoming WebHooksを使っていてIncoming WebHooksを使わない方法でコードが書いてある記事になかなか辿り着けず自分が結構困ったので、同じ境遇の人に向けています。

Incoming WebHooksやOutcoming WebHooksを利用すると楽なんですが(そしてインデグレーションを余分に消費しないようなんですが)、現在非推奨となっていていつ使用できなくなるか分からないのと、結局使用しない方法を覚えないと別のこともできないままなので、Slack API推奨のAppを使用して書いていきます。

 

目次

 

  1. 前準備
  2. bot投稿までの流れ
  3.  App(アプリ)を作成する

 

前準備

  • Slackの登録が既にされている。
  • Googleアカウントに登録している。

この記事では上記2つの登録が終わっていることを前提にしています。

 

bot投稿までの流れ

Slackにbotで投稿するまでには、以下のことが必要です。

  1. SlackのApp(アプリ)を作成する。
  2. Appでbotの設定を行う。
  3. GAS(Google Apps Script)の設定を行う。
  4. コードを書く。
  5. テストをしてみる。

やってみないとわからないと思うので、とにかくさくさくやっていきましょう!

App(アプリ)を作成する

さっそくSlackAPIでAppの作成です。

 

まずは「Slack API | Slack 」にアクセスします。

Slack SPIのページにいく右上にYour appsと出てくるので、ここをクリックします。

 

 

次に、Your AppsのCreate New Appをクリックします。

※ この画面が出てこない人は、まず「sign in to your Slack account」より自分のSlackアカウントにログインしてみてください。

 

Slack API/create new app

 

From scratchをクリックします。

 

Slack API/create an app


display: inline-block; font-size: 80%;">「App Name」はAppの名前です。

書いてある通り名前は後でも変えられるのでなんでも大丈夫です!

 

Pick a workspace to develop your app in:ではbotを使用したいワークスペースを選択します。

 

Slack API/Name app & choose workspace

 

Create App」をクリックしたらAppの完成です!

 

 

できていますね!

 

次はAppの設定を説明します。