GASでSlackAPIが使えるライブラリ(SlackApp)を使ってみたので、画像付きで解説してみる

今回は、Google Apps Script (GAS) でSlackのAPIが簡単に取り扱えるライブラリの紹介です。

ここでは、SlackにインストールしたBotからメッセージを通知するものを作ります。

https://github.com/soundTricker/SlackApp

## Slackの設定

### Appの作成

Slack API のページを開く

https://api.slack.com/apps

「①Create New App」→「②From scratch」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/bd028128-cded-343c-3fb2-d19aa9c62900.png)

「App Name」にはアプリ名(表示名、後で変更可)
その下はAppを導入するワークスペースを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/fef3cd9f-77ed-9156-da93-8a7faa2e8337.png)

### スコープの設定

Basic Infomation (最初の画面) にある「①Add features and functionality」→「②Permissions」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/4daf3596-6a8d-af6b-04a8-b3f45499aaca.png)

Scopes の項目で「Add an OAuth Scope」をクリック
ここでは、このApp(Bot)がアクセスできる操作を指定する。
※「Bot Token Scopes」と「User Token Scopes」の２つあるが、今回は前者を使用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/6585f0a6-5f44-829e-434e-7a0d77ccf2a9.png)

「chat:write」と「chat:write.public」をクリック
※「chat:write.public」を有効にすると、Botがチャンネルに参加していなくてもメッセージが送信できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/b3aadbd3-ce93-1571-ca32-a39a7f87b119.png)

### Botの設定

Basic Infomation (最初の画面) にある「①Add features and functionality」→「③Bots」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/567a9336-3dc6-2d9e-fc7c-63a35b3c62d2.png)

Your App’s Presence in Slack の項目にある App Display Name の「Edit」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/83fdcd72-29a2-aa63-119c-de783ae0a20b.png)

「Display Name」は表示されるBot名
「Default username」はSlackで参照する際に使用される名前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/1d49a01e-9ee9-27a8-8be4-6a5584f60a71.png)

### AppをSlackにインストール

Basic Infomation (最初の画面) にある「①Install your app」→「②Install to Workspace」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/6aa6fc4f-d8cf-63d3-643e-a1cd52f8930b.png)

「許可する」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/3a95d8b7-55c3-8ab9-e7f2-84b9ee1f8c2b.png)

この画面が出る場合は、**Botの設定**で Display Name を設定できていない可能性があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/319d651b-1289-ca59-2815-00f9f13b175b.png)

### Tokenを確認
Basic Infomation (最初の画面) にある「①Add features and functionality」→「②Permissions」
「Bot User OAuth Token」に記載されているものが **Token** です(GASで設定します)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/dcd6c229-367c-96e8-6c96-2f818bf4d9d3.png)

## GASの設定

### ライブラリ(SlackApp)の追加

GASの左側にあるライブラリの”＋” をクリック → 以下のスプリクトIDを入力し、検索
``1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq``
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/ea68e30d-c1ee-b79f-a61e-ddd75bc89756.png)

IDの欄に「SlackApp」が表示されたら「追加」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/2a6ac0c0-b6e4-19a4-6b37-36e2e5c4cf42.png)

### Slackに通知するプログラム

コードに以下を記述
- `xoxb-xxxxx` には先程取得した Token を入力
- `channelId` にはチャンネル名(“#”が必要) or “C”から始まるチャンネルID(チャンネル詳細画面で取得可) を入力

``` code.gs
function sendSlack() {
  const slackApp = SlackApp.create("xoxb-xxxxxx");
  const channelId = "Cxxxxxxxx";
  //or const channelId = "#general";
  const text = "Hello World";
  slackApp.postMessage(channelId, text);
}
```

「①プロジェクトを保存」→「②実行」をクリック
![2022-12-09_12h11_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/9477ab23-da01-fd12-c2e1-22f36064fd7b.png)


### 承認が必要な場合

はじめて実行する場合は「承認が必要です」通知が出てきます。
「権限を確認」をクリック
※この後、Googleアカウントを選択する画面が出てくる場合があるので、使用しているアカウントでログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/7bced93b-83d4-52c7-000c-f5346f7b7daa.png)

左下の「詳細」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/2251478d-4ecd-6530-eb17-b48955b961d7.png)

さらに左下の「***(安全ではないページ)に移動」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/ec4a1e11-804e-fb61-08cc-3273351612bf.png)

「許可」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/01d5f977-c9cc-057f-633f-65d88203b00d.png)

## 完成

Slackに通知されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430946/9912bca2-6aac-fefb-621c-28b82f8f38a4.png)


## 編集記
↓ここにも同じ内容の記事書いていますので、ぜひ参考に
https://tech.minagu.work/archives/13