LoginSignup
0
0

More than 1 year has passed since last update.

GASを使ってSlackに好きな動画をお知らせしてくれるBotを作ってみる

Posted at

はじめに

今回はGASを使ってスクレイピングした情報をSlackに自動的に飛ばしてもらうBotの作成をしてみます。
この実装ではスクレイピングに限らずGASとSlackの連携ができるようになるのでスプレッドシートの情報を使ったり、その他のツール作成にも役に立つかと思います!

実装開始

Slack側の手順

まずはSlackにアクセスするために必要なAPIの設定を行います。
こちらのSlack APIのページにて以下の手順通り操作してみてください。

1. Create New App(緑色のボタン)→From Scratchを選択する

スクリーンショット 2022-10-19 21.06.31.png

2. Name app & choose workspace → プロジェクトの命名と自身が使用しているチャンネルを選択する

スクリーンショット 2022-10-19 21.07.11.png

これでbotを動かすためのアプリケーションが作成されました。
続いてはこのアプリにアクセスできるよう認証周りの設定です。

3. OAuth & Permissionsを選択する

スクリーンショット 2022-10-19 21.11.16.png

4.Scopesにある以下三つの権限を追加して保存する

スクリーンショット 2022-10-19 21.13.07.png

5. 左のSettingからAppHomeを選択しYour App’s Presence in SlackにてEditボタンを押すとbotの命名ができるので適当に編集する

6. Install Appから発行されたトークンをコピーしておけば完了!!

スクリーンショット 2022-10-19 21.23.04.png

これでSlack側の設定が終わりです!!

GAS側の手順

Slackへの通信ができるライブラリが用意されているのでそれのインストールから始めます!

1. GoogleAppScriptを開き、ライブラリタブを選択する

2. SlackAppというライブラリをインストールする

スクリーンショット 2022-10-19 21.27.54.png

スクリプトIDに以下を入れて検索してください

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

あとはコードを書くだけ!

function sendMessage(url) {
  const token = ''; // Slackの設定画面からコピーしたトークンを変数に入れる
  const slackApp = SlackApp.create(token);
  const channelId = ''; // 通知を送りたいチャンネル名を変数に入れる
  const message = 'Hello World' // 通知したいメッセージを変数に入れる
  slackApp.postMessage(channelId, message);
}

こんな感じで書いてあげればこの関数を呼び出した時に自身のSlackにメッセージが届きます!!

応用(?)

ここからはそれを自動、定期的に通知させるためにGASで定期実行を設定します。

画面左にある時計マークのトリガーを選択し時間手動型で関数を実行する

スクリーンショット 2022-10-19 21.34.56.png

この画面で自分の好きなタイミングで実行するよう設定すればどんなタイミングでも勝手にこの関数が実行されるので自動かつ定期的に通知したいものが送られてくるようになります!

私はこの機能を使用して友人と話すチャンネル内に定期更新される動画サイトの最新動画をURLとして拾ってきて通知する仕組みを作りました!
スクレイピングの方法に関しては「GAS Parser」とかで調べてみるとわかりやすいと思います!
これで業務改善や仕事を楽にする試みとして使ってみてはいかがでしょうか? では!!

0
0
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
0
0