この記事で説明すること
Google Apps Script(以下、GAS)を使ってSlackに固定メッセージを定期的に投稿してみたので、その手順を記します。
GASはを使うと手軽に自動化ができると聞いたので、さわってみた備忘録です。
手順
SlackにWebhookの口を用意しておき、GASからそのWebhookを呼び出すスクリプトを書き、それを定期実行させるトリガーをGASに設定する、という手順になります。
1. Googleアカウント、Slackアカウントを用意
GASの利用にはGoogleアカウント、Slackの利用にはSlackアカウントが必要です。
それぞれ作成します(どちらも無料で作成可能)。
私は既に作成済のアカウントを使いました。
2. SlackのIncoming Webhookの設定
-
Slackにメッセージを投稿する先のチャンネルを作成しておきます。
-
Slack でのIncoming Webhook の利用に沿って、SlackのIncoming Webhookを設定します。
Incoming Webhookを利用すると、WebhookのURLから発行されます。このURLにPOSTすることで、外部から選択したチャンネルにデータを送信できます。
この後の手順で、GASからこのWebhookのURLヘPOSTします。
3. GASでスクリプト作成
GASでSlackのWebhook URLを呼び出すスクリプトを書きます。
GASについて詳細は、公式ページをどうぞ。
(5分でできるquick startも載ってます)
- GASでスクリプトを書くために、Googleドライブから、Google Apps Script を接続します。
Google ドライブの画面で、[+ New]のボタンをクリックし、開いたダイアログで、[Connect more apps]をクリックします。
- [Google Apps Script]を検索し、[CONNECT]を押下して、GoogleドライブにGASを接続します。
- Google ドライブの画面で、再度[+ New]のボタンをクリックし、開いたダイアログで、[Google Apps Script]を選択すると、Google Apps Scriptの画面が開きます。
- myFunction()の中に、SlackのWebhook URLを呼び出すコードを書きます。
- SlackのIncoming Webhookの使い方は、Sending messages using Incoming Webhooksを参考にします。
- 今回、メッセージのみPOSTするコードにしていますが、POSTするメッセージの書式設定なども行うことができるようです。
- GASからWebhookを呼び出すには、Class UrlFetchApp の fetchを使います。
こんなコードを書きました。
# SlackのWebhook URLを指定
var slackWebhookUrl = 'https://hooks.slack.com/services/XXXXXXXXX';
function firstApp() {
var data = {
'text': 'Hello, this message is from my GAS App',
};
var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
UrlFetchApp.fetch(slackWebhookUrl, options);
}
4. GAS スクリプト実行
- 実行します。ツールバーの[Run]のアイコンをクリックします。
- Slackに投稿されました。
5. GASのトリガーの設定
定期投稿させるために、GASのトリガーの設定をします。
- トリガー設定画面を開きます。ツールバーの[Current project's triggers]アイコンをクリックします。
- [トリガーを追加]をクリックし、トリガーを設定します。
今回、[イベントのソース]を[時間主導型]に設定し、1時間おきに起動するように設定しました。
- 1時間おきにSlackに通知されるようになりました。
やってみた感想
やりはじめてから1時間半くらいでなんとなく動くようになったので、とても取っつきやすかったです。
GASは、ドキュメントも充実していてできることも多そうですし、参考になる記事も検索するとたくさん出てきました。
ちょっと自動化してみたいときに気軽に使えるツールだと思います。
次は、情報収集のために、Twitterから定期的にあるキーワードで検索して、Slackに投稿する、というのをやってみたいと思います。
(ちなみに、TwitterとSlackの連携は、この手順ですぐできます)