Help us understand the problem. What is going on with this article?

【初心者向け】GASを使ってSlackへ自動通知

More than 3 years have passed since last update.

Slackへ自動通知を行いたい!
というときに、GAS(Google Apps Script)を使用することで簡単に通知を行なうことができます。

今回の手順でできるようになること

  • 特定の時間に○○というメッセージをSlackの特定のチャンネルへ投稿すること

前提

  • Slackアカウントは取得済み
    • 基本的な操作もOK
  • Googleアカウント取得済み

使う技術要素

SlackのIncoming WebHooks
Slackは当然使用するのですが、そのSlack内のサービスのIncoming WebHooksも使用します。

Incoming WebHooksとは
Slackのサービス。このサービスを使用すると、WebURLが発行される。この発行されたURLにPOSTすることで、Slackへ投稿できる。

Google Apps Script
Googleが提供する、スクリプト実行環境。
Javascriptのコードを動かすことができます。
コードの実行のトリガーは時間を指定することができます。

上記2つを使って連携、自動通知をしていきます。

手順

1. SlackのIncoming WebHooksの登録

SlackでIncoming WebHooksを登録します。

(1)まずは、自動通知用のチャンネルを作成します。
Slackにてチャンネルを作成します。
今回は#tsuutiというチャンネルにします。

(2)Incoming WebHooksの設定をします。
Incoming WebHooksの設定をしていきます。

チームのプルダウンを押すと、「Team settings」というメニューがあるので、そこを押します。
menu.png

設定ページが開き、左側のペインに「Configure Apps」というメニューがあるので、さらにそれを押します。
menu_2.png

新しいページが開き、上部に検索ボックスが表示されるので、そこで「Incoming WebHooks」という検索をすると、Incoming WebHooksの設定ページへと飛ぶことができます。
search.png

「Add Configuration」を選択し、投稿したいチャンネル( (1)で作成したチャンネル )を選択し、作成ボタンを押します。
add.PNG

作成完了後、Webhook URLの項目に出てくるURLを後で使用します。
(このURLにしてされたデータをPOSTすることでSlackへ投稿ができます。)

Slack側の設定はこれで完了です。

2. Google Apps Scriptの作成

Google Apps Scriptを作成します。

(1)Google DriveからGoogle Apps Scriptを選択します。

(2)コードを書きます。

var postUrl = 'Incoming WebHooksで発行されたURL';
var username = 'botbot';  // 通知時に表示されるユーザー名
var icon = ':hatching_chick:';  // 通知時に表示されるアイコン
var message = 'test';  // 投稿メッセージ

function myFunction() {
  var jsonData =
  {
     "username" : username,
     "icon_emoji": icon,
     "text" : message
  };
  var payload = JSON.stringify(jsonData);

  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };

  UrlFetchApp.fetch(postUrl, options);
}

Incoming WebHooksを参考に、上記のjsonData(payload)を設定することで、Slackへの投稿ができます。
Incoming WebHooksによると、投稿メッセージとともに、ユーザー名やiconも指定することができます。また、上記では試していませんが、チャンネルも指定できます。

作成したpayloadを、GASで定義されているUrlFetchAppでPOSTすることができます。
UrlFetchAppを使用することで、GASでHTTP通信を行なうことができます。

このコードが実行されると、ひよこアイコンのbotbotというユーザー名のユーザーがtestと発言します。

(3)実行してみます。
画面上部の実行ボタンを押すことで、コードを実行できます。
初回実行時は実行の許可を求められるので、許可します。
run.PNG

投稿されました!!
message.PNG

(4)トリガーを設定します。
画面上部の現在のプロジェクトのトリガーというボタンを押し、「今すぐ追加するにはここをクリックしてください。」のリンクをクリックします。
triger.PNG

time.PNG

この設定で、毎日午後4時~5時の間にこのスクリプトが実行され、Slackに投稿されます。

まとめ

以上で、簡易的にではありますが、Slackへ自動通知ができるようになります。
Google Apps Scriptのトリガー時間の設定は範囲が選べるようになっていて、「毎日○時○分」という指定ができないのですが、スクリプトを使用するとこのような設定もできるようになります。
これは別記事にしようと思います。

chihiro
jrits
信頼と魅力のある先進のITをもとに、お客様のワークスタイル・イノベーションの実現を目指します。
http://www.jrits.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away