【2021年版】GASとSlack APIでボットを作成しチャンネルにメッセージを自動投稿する方法

2021年3月14日

Google Apps Script(GAS)とslack APIを活用することで、簡単にボット投稿が実装可能です。

今回、Slack APIを利用したGASによるSlackボットを作成し、チャンネルへの投稿やDMを送信の実装方法を解説します。

SlackはAPI活用してボットなどを作成可能

コミュニケーションツールSlackは、主にテキストベースのチャットで社内やプロジェクトメンバーとのやり取りに活用されています。

Slackはその使いやすいユーザーインターフェースと機能の拡張性に加え、リモートワーク・在宅勤務が主流となったことを受け、多くの企業・組織で導入されました。

チャットツールとして競合とされるMicrosoft365のTeamsと比較すると、Slackは前述した機能拡張性が優れています。

SlackのAPIで様々なSlackの機能が提供されており、Slackボットなどを簡単に作成することができます。

SlackAPIでメッセージ投稿するボットのSlackアプリ作成方法(スコープ・パーミッションの権限周り設定編)

Slack APIを使って、サーバーからログメッセージをSlackのチャンネルに通知したり、問い合わせボットなどが可能です。

GASはSlack APIが簡単に利用可能

Google Apps Script(GAS)は、そんなSlack APIと簡単に連携しやすいという特徴があります。

GASにはSlackAppというライブラリが用意されており、SlackのAPIへのリクエストが数行のコードで実現することができます。

GASはスケジュールによるトリガー登録でスクリプトの定期実行が可能です。

さらに、Webアプリケーション登録によって、SlackからのWebhookによるスクリプト実行もできます。

このようにサーバーレスでのスケジュール定期実行やWebhook実行の環境も整っているため、GASはSlackAPIを活用したSlackボットの開発環境に適しています。

GASによるSlackボット作成手順

今回、Google Apps Script(GAS)による簡単なSlackボットの作成方法を1Stepごとに詳しく解説します。

Slack APIの登録方法から、GASのライブラリを活用した、チャンネルに投稿するサンプルコードを詳解します。

GASに詳しくない初心者にも分かりやすいようにステップずつ解説しています。

slackアプリのAPI利用設定手順

まず、Google Apps Script(GAS)で利用するためにSlack APIの利用登録を行う手順を解説します。

Slackアプリの作成

1.Slack APIのページにアクセスし、「Create an App」をクリックします(すでに作成済みの場合は、右上に表示される「Create New App」)。

slackAPIでのボットアプリ作成手順

2.「アプリ名(App Name)」と「利用するSlackワークスペース名(Development Slack Workspace」を入力し、「Create App」ボタンをクリックします。

Google Apps Script(GAS)でSlack APIを利用するためにSlackアプリをSlack APIページで作成する

これでSlackAPIで利用するアプリの作成が簡単です。

なお、無料アカウントの場合は作成可能なアプリ数は合計10個と上限が設けられています。

Slack APIのスコープ&パーミッション設定

続いて作成したSlackアプリでできる権限を決めるスコープとパーミッション設定を行います。

1.SlackアプリのSettingメニューにある「OAuth & Permissons」を選択します。

Slack APIの管理画面のメニューから「OAuth&Permission」を選択

2.Scopesメニューから「Add an OAuth Scope」ボタンをクリックします。

Slack APIのOAuth & Permissionsから、「Add OAuth Scope」ボタンをクリック

3.Slackボットで必要なとなる「chat:write」、「chat:write.public」、「chat:write.customize」を選択し、保存します。

Google Apps Script(GAS)で作成するSlackボットに必要なスコープを設定

Slackボットでパブリックチャンネルに必要なBot Token Scopeです。

最小で必要なのはボットにチャットに書き込み権限を与える「chat:write」です。

それ以外に、パブリックチャンネルに許可なしで書き込める「chat:write.public」と、ボットのアイコン画像や名前を書き換えられる「chat:write.customize」を追加しています。

「chat:write.public」があると、作成したSlack Appをパブリックチャンネルに追加する対応が不要です。

複数のチャンネルでSlack Appを利用してボット投稿する場合に「chat:write.public」権限を付与すると、設定の手間が省略できます。

「chat:write.customize」は、デフォルトのSlack App以外の画像や表示名を変えられるため、ボットの用途ごとにアイコンや表示名を使い分けられて便利です。

Slackボット追加・作成とワークスペースにインストール

最後にSlackボットを作成して、導入したいSlackワークスペースにインストールを行います。

1.Settingメニューから「App Home」を選択し、「App Display Name」で「Edit」ボタンをクリックします。

2.チャット上で表示されるボットの名前と、デフォルトのユーザー名を入力し、「Add」ボタンをクリックします。

Slack APIでのボット追加画面でボット表示名とデフォルトユーザー名を設定し、ボット追加

3.「Bot user added!」というメッセージが上部に表示されると、Slackボットの追加・作成が完了です。

「Bot user added!」というメッセージが表示されれば、Slack APIにボット追加完了

4.Slackボットが作成できたら、「Install App」を選択し、「Install to Workspace」ボタンをクリックし、Slackボットをワークスペースにインストールします。

Slack API管理画面のInstall App to Workspaceの画面から、ボットを導入する

5.Slackのワークスペースに対し、Slackボットの権限リクエスト画面が表示されるので、実行内容を確認した上で、「許可する」ボタンをクリックします。

Slackボットの権限許可画面が表示されるので、実行内容を確認して、許可ボタンをクリック

以上でSlackボットの作成&ワークスペースへのインストールが完了です。

 

Slack APIのボット用トークンを発行

最後にGoogle Apps Script(GAS)のスクリプトで利用する、Slack APIでボット用のトークンを取得します。

Slack APIの管理画面にあるSlack APIのOAuth Scopesのトークンをコピー

「Bot User OAuth Token」に表示されている文字列の右側にある「Copy」ボタンをクリックして、トークンを控えます。

このボットユーザーのトークンはGASのコードで利用します。

以上でSlack APIでのアプリ作成からパーミッション設定、ボット追加、トークン発行までの事前準備が完了です。

ここまでの手順については、以下の記事でも詳しく解説しています。

【2021年版】slackAPIでメッセージ投稿するボットアプリ作成・設定(スコープ権限を詳細解説)

GASによるslack APIの利用手順(ライブラリ導入)

Google Apps Script(GAS)でSlack APIによるボットを作成するには、Slack用のライブラリを利用するのが便利です。

1.GASのスクリプトエディタエディタの画面でライブラリの横にある+アイコンをクリックし、ライブラリを追加します。

Google Apps Script(GAS)のスクリプトエディタで「ライブラリ追加」を選択

2.ライブラリの追加画面で、スクリプトIDの入力欄にSlackAppのスクリプトIDを入力し、検索ボタンをクリックします。

SlackAppのスクリプトID:1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

Google Apps Script(GAS)のSlack用ライブラリ「SlackApp」をインストールするため、プロジェクトIDを入力し、検索

※かつてはプロジェクトIDでしたが、新しいスクリプトエディタからはプロジェクトIDでは検索できなくなりました。

3.IDが「SlackApp」になっていることを確認し、バージョンも最も大きい数字のものにして「追加」ボタンをクリックします。

GASライブラリのSlackAppが表示されたら、バージョンを選択し、追加ボタンをクリック

以上の3StepでSlackAppのGASライブラリ導入が完了です。

Google Apps Script(GAS)のスクリプトエディタでSlackAppのライブラリが追加されていることが確認

GASのスクリプトエディタのライブラリの下に「SlackApp」が追加されていることが確認できます。

Slackのチャンネルに自動投稿するGASボットのサンプルコード

Google Apps Script(GAS)でSlackのチャンネルに自動投稿するボットのサンプルコードを作成していきます。

Google Apps Script(GAS)で作成したSlackボットは、generalチャンネルに投稿する

今回は先程ボットをインストールした「オートワーカー」のワークスペースのgeneralチャンネルにボットがメッセージ投稿するようにします。

Slackボットがgeneralチャンネルにメッセージ投稿するGASサンプルコードは以下の通りです。

function postSlackbot() {
//SlackAPIで登録したボットのトークンを設定する
let token = "xoxb-*******************************************";
//ライブラリから導入したSlackAppを定義し、トークンを設定する
let slackApp = SlackApp.create(token);
//Slackボットがメッセージを投稿するチャンネルを定義する
let channelId = "#general";
//Slackボットが投稿するメッセージを定義する
let message = "SlackボットによるGASからの投稿メッセージです。"
//SlackAppオブジェクトのpostMessageメソッドでボット投稿を行う
slackApp.postMessage(channelId, message);
}

Google Apps Script(GAS)でのSlack APIを使った自動投稿のボットのサンプルコード(APIのトークン埋め込み型)

3行目のtoken変数にSlackAPI管理画面で取得したトークンを設定しています。

token変数に格納したトークンを引数にして、SlackApp.createでメッセージ投稿など各種SlackAPI操作が可能なSlackAppオブジェクトを作成します。

11行目に今回導入したSlackAppライブラリを使い、Slackのパブリックチャンネルの#generalに投稿しています。

Google Apps Script(GAS)でSlackAPIを使って、パブリックなチャンネルに投稿するSlackボットを作成して投稿する方法

「Slackテストボット」から、スクリプトで設定したメッセージが、#generalに自動で投稿されています。

webhook設定でボット応答も可能に

今回はGoogle Apps Script(GAS)で、Slackのパブリックチャンネルにメッセージを投稿するSlackボットのスクリプトを作成しました。

しかし、これだけでは、Slackのチャンネルで投稿されたメッセージは取得できず、ユーザーとのやり取りに応じたチャットボットは実現できません。

Slack側でwebhookの設定を行い、Slackのチャットに投稿された情報をGASに送れば、問い合わせのチャットボットのようにメッセージのやり取りが可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)でチャットツールSlackのAPIを利用して、自動投稿するボットを作成する手順を紹介しました。

SlackはAPIの利用登録が簡単にでき、GASのスクリプトとも相性がよくて、10数行で自動投稿のボットプログラムが作成できます。

今回、GASでSlack APIによるボット投稿を行うまでのステップと、ボット投稿を行うサンプルコードを解説しています。

紹介したGASのSlack APIによるチャット投稿ボットを参考に、Slack APIを活用した便利なボットやアプリケーションを作成しましょう。