API

【GAS】slackAPIでチャットにメッセージを投稿する2つの方法

slackAPIを使うための事前準備

slackAPIを使うためには事前準備として設定が必要です。

設定と聞くと背筋が寒くなりますが、自分のslackアカウントでAPI利用を有効にして、トークンを発行するだけです。

手順にのっとってやっていきましょう。

事前準備が整っている方はとばしてください。

slackAPIを使って普通にチャットに投稿

SlackAppライブラリを使ってチャットに投稿

事前準備

https://api.slack.com/にアクセス 右上の赤枠のYour appsをクリック



sign in to your Slack accoutをクリックしてサインイン画面へ ※すでにログインしている場合は不要



サインインしたらもう一度Your Appsページへアクセスして Create an Appをクリック



From scratchを選択



アプリの名前を入力、ワークスペースを選択 ※ワークスペースはプルダウンから選択する



基本設定画面からBotsを選択



App Home画面のReview Scopes to Addをクリック



OAuth & Permissionsの赤枠のAdd an OAuth Scopeをクリック



選択画面がひらくのでchat:writeを選択



もう一度、基本設定画面(Basic Information)に戻る

Add features and functionalityがオッケーっぽくなってたらオッケー



同じく基本設定画面(Basic Information)でInstall to Workspaceをクリック



アクセス権限リクエスト画面で「許可する」をクリック


以上で設定終了です。

トークンとチャンネルIDを取得する

設定が完了するとトークン(アクセス許可証みたいなもの)が発行され、slackにプログラムからアクセスできるようになります。

トークンを取得する

トークンは設定画面のOAuth & Permissionsにあります。左メニューからいけます。


発行されたトークンをCopyしてどこかに貼り付けておきましょう。


チャンネルIDを取得する

チャンネルIDはslackのチャット画面でチャンネル名(「# general」みたいなの)を右クリック

「チャンネル詳細を表示する」を左クリックします


赤枠がチャンネルIDです。こいつもコピーしてどこかに貼り付けておきます。


すべての準備が整いました。では、slackAPIからメッセージを投稿していきます。

slackAPIを使ってメッセージを投稿する2つの方法

slackAPIを使ってメッセージを投稿するには普通に接続する方法とライブラリを使う方法があります。

まずは普通に接続してメッセージを送ります。

普通の接続方法

const sendSlack = () => {
  const endpoint = 'https://slack.com/api/chat.postMessage' // メッセージ投稿のためのアドレス
  const token = 'トークンが入ります'
  const channel = 'チャンネルIDが入ります'
  const text = '俺たちのslackへの旅路'
  const payload = {
    token, channel, text
  }
  const options = {
    method: 'POST', // 省略可能
    payload,
  }
  const response = UrlFetchApp.fetch(endpoint, options)
  console.log(response.getResponseCode())
}


実行結果

メッセージがとんでいるので成功ですね。


世の中いろんなAPIがありますが、使い方はだいたい一緒です。ざっくりこんな感じ。

  • 接続先のURLを指定する ※エンドポイントとか呼ばれます
  • 接続許可証をくっつける ※トークンとかキーとか呼ばれます
  • 接続先のURLに条件があれば条件をつける ※クエリとか呼ばれます
  • 渡したい情報があればわたす ※リクエストボディとか呼ばれます

要するに、APIの窓口(URL)を指定して、許可証を渡しつつ、情報を提出する感じです。

仕組みとしては市役所の窓口に似ています。

住民税を支払いたいときは、市民税課(エンドポイント)に行く。免許証を出す(トークン)。課税申告書を出す(リクエストボディ)。

住民票がほしいときは、市民課(エンドポイント)に行く。免許証を出す(トークン)。住民票の種類を書類に書いて提出する(クエリ)。


コード全体

const sendSlack = () => {
  const endpoint = 'https://slack.com/api/chat.postMessage' // エンドポイント=窓口
  const token = 'トークンが入ります' // トークン=許可証(リクエストボディの中身)
  const channel = 'チャンネルIDが入ります' // 投稿先のチャンネルID=リクエストボディの中身
  const text = '俺たちのslackへの旅路' // 投稿メッセージ=リクエストボディの中身

// payloadの中にリクエストボディの中身を一式詰め込む
  const payload = {
    token, channel, text
  }

// optionsの中に提出
  const options = {
    method: 'POST', // 省略可能
    payload,
  }
  const response = UrlFetchApp.fetch(endpoint, options)
  console.log(response.getResponseCode())
}

endpointがエンドポイント

tokenがトークン

textがメッセージ

payloadが必要情報一式

で、UrlFetchApp.fetchメソッドは提出、ってわけです。

UrlFetchApp.fetchメソッド ー URLに対して要求するメソッド

構文:UrlFetchApp.fetch(url, options)

戻り値:responseオブジェクト

参照)Google Apps Scriptのマニュアル UrlFetchAppクラス


これでも問題ないのですが、SlackAppを使った方法もありますので紹介します。

SlackAppを使った接続方法

SlackAppはライブラリにありまして、自分のGoogle Apps Scriptエディタで利用するには追加しないといけません。


左メニューのライブラリの+ボタンをクリック


スクリプトIDでライブラリを検索

スクリプトID

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq


ライブラリ検索画面でSlackAppが出てきたら「追加」をクリック


こんなふうにSlackAppが追加されてたらオッケー


slackにメッセージを送信するコード

const useSlackApp = () => {
  // SlackApp利用に必要なインプット
  const token = 'トークンが入ります' // トークンの文字列を入れる
  const channel = 'チャンネルIDが入ります' // チャンネルIDをいれる
  const text = '俺たちのSlackAppへの旅路' // slackへのメッセージ

  // SlackAppでメッセージを送信
  const slackApp = SlackApp.create(token)
  slackApp.chatPostMessage(channel, text)
}


コードの赤字の部分にトークンを入れて、青字にチャンネルIDを入れます。


で、ライブラリを使う部分はこの2行でオッケー

const slackApp = SlackApp.create(token)
slackApp.chatPostMessage(channel, text)


一応説明します。

SlackAppクラスのcreateメソッドにトークンをわたしてslackAppオブジェクトをつくってます。

つぎにslackAppオブジェクトのchatPostMessageメソッドにチャンネルIDとメッセージをわたしてます。


実行結果


超簡単です。

わっしょい

Copied title and URL