理系大学生の英語学習日記

データや数値を使って定量的で分かり易い勉強法の紹介をしています.それ以外にも旅行や英会話サークルの活動など雑多な記事を書いています

【GAS】Incoming webhookでslackにテキストを送信する方法

お久しぶりです,manonです。

最近バイト先の在庫管理システムを構築していてgoogle スプレッドシートの在庫数が変化した箇所をslackに送信して,slackでその理由を書いたらoutgoing webhookでまたgoogleスプレッドシートに返してコメントとしてテキストを挿入するコードを書いていました。

調べ方が悪かったのか意外と同じようなことをしている人がおらず苦戦したので備忘録的な意味も込めて紹介していきたいと思います。

 

スプレッドシートからslackにデータを飛ばす方法

gas側の準備

まずはスプレッドシートからslackにデータを飛ばす方法を説明していきたいと思います。google スプレッドシートを開いたら「ツール」から「スクリプトエディタ」を

選択してください。

f:id:EnglishScience:20210203004801j:plain

すると下記の画像のような「コード.gs」というプロジェクトが自動で生成されます。

このmyFunctionというところにコードを書いていきます。今回はgasでslackにテキストを送信するためのコードを用意したのでこれをコピペしてこのページ通りに進めていけば動作します。

f:id:EnglishScience:20210203004906j:plain

 

 

function myFunction() {

  let postUrl  = "ここにIncoming webhookのURLを貼る"
  let userName = "確認猫"   // Slackに通知する時の名前になります
  let icon     = ":confirm_cat:"    // 表示されるアイコン
  let message  = "スプレッドシートからslack" // 送信するメッセージ

 let jsonData = {
   "username" : userName,
   "icon_emoji" : icon,
   "text" : message
 }  

 // 上の送信内容を設定  
 let payload = JSON.stringify(jsonData)


 // オプションを設定
 let options =
 {
   "method" : "post",
   "contentType" : "application/json",
   "payload" : payload
 };


 // Slackに通知する
 UrlFetchApp.fetch(postUrloptions);  
  
 
これがgas側の記述になります。大まかな流れとしては指定したURLにjson
ユーザーネームやらメッセージやらを投げることが出来るコードです。
これにスプレッドシートのセルの持っている情報を貰う記述をすることでデータをスプレッドシートから
取ってきて投げるという一連の動作が出来るのですが、
色々書くと見辛くなってしまうと思うのでやめておきます。シートのセルからデータを取ってきたりする
記述はめちゃ簡単なので「google スプレッドシート gas」等で検索してください。
次にこのコードのデータを投げる宛先を準備します。
 

SlackでIncoming webhookの準備をする

ここではgasでデータを投げた後slackで受け取る為の準備をしていきます。slackにデータを
持ってくるためにはIncoming webhookというアプリを使います。
 
まずはslackの左側のメニューバーから「その他」⇒「App」を開きます
f:id:EnglishScience:20210203003745j:plain
 
そうしたら検索バーに「incoming」と入力してください。一番最初に出てきているのが今回
使いたいIncoming Webhookなので追加を押しましょう。

f:id:EnglishScience:20210203003945j:plain

追加を押したら、「slackに追加」を選択し、チャンネルへの投稿という項目で自分がこのアプリを

追加したいチャンネルを選択し「Incoming Webhookインテグレーションの追加」を選択してください。

そうすると以下の画像のような画面になります。

この画像にあるWebhook URLというのが先程のコードにあったjsonを投げつける宛先のURLになるので

コピーしておきましょう。

f:id:EnglishScience:20210203004117j:plain

 設定を保存してslack側の準備はおしまいです。
そうしたらgasに戻って先程コピーしてきたURLを"postURL"にペーストします。
最後にフロッピーディスクのマークを押して保存します。
 

実際にGASからslackにテキストを送ってみる

スクリプトエディタの画面で「デバック」を押します。

以下の画像のように実行ログで実行完了と出ればコードが正常に実行されています。

f:id:EnglishScience:20210203004506j:plain

 
slackを確認すると無事テキストが受信出来ました。

f:id:EnglishScience:20210203004519j:plain

今回は「GASを使ってスプレッドシートからデータを送信してslackに送る」工程を行ったので、

次回は「slack側からテキストをGASに送信する方法」を説明していきます。

この二つの動作が出来るだけで作れるシステムの幅がガッと広がるので是非次の記事も読んで試してみて下さい!

最後まで読んで頂きありがとうございました。