11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Apps ScriptからSlackへ定期投稿してみた

Last updated at Posted at 2019-11-03

この記事で説明すること

Google Apps Script(以下、GAS)を使ってSlackに固定メッセージを定期的に投稿してみたので、その手順を記します。
GASはを使うと手軽に自動化ができると聞いたので、さわってみた備忘録です。

手順

SlackにWebhookの口を用意しておき、GASからそのWebhookを呼び出すスクリプトを書き、それを定期実行させるトリガーをGASに設定する、という手順になります。

1. Googleアカウント、Slackアカウントを用意

GASの利用にはGoogleアカウント、Slackの利用にはSlackアカウントが必要です。
それぞれ作成します(どちらも無料で作成可能)。
私は既に作成済のアカウントを使いました。

2. SlackのIncoming Webhookの設定

  1. Slackにメッセージを投稿する先のチャンネルを作成しておきます。

  2. Slack でのIncoming Webhook の利用に沿って、SlackのIncoming Webhookを設定します。
    Incoming Webhookを利用すると、WebhookのURLから発行されます。このURLにPOSTすることで、外部から選択したチャンネルにデータを送信できます。
    この後の手順で、GASからこのWebhookのURLヘPOSTします。

SettleIncomingWebhook.png [Slackアプリ](https://api.slack.com/apps)のページから、上記手順で作成したSlackアプリを選び、左ペインから[Incoming Webhooks]の項目を選ぶと、作成されたWebhook URLを確認することができます。 WebhookURL.png

3. GASでスクリプト作成

GASでSlackのWebhook URLを呼び出すスクリプトを書きます。
GASについて詳細は、公式ページをどうぞ。
5分でできるquick startも載ってます)

  1. GASでスクリプトを書くために、Googleドライブから、Google Apps Script を接続します。
    Google ドライブの画面で、[+ New]のボタンをクリックし、開いたダイアログで、[Connect more apps]をクリックします。
googleDriveNew.png connectGAS.png
  1. [Google Apps Script]を検索し、[CONNECT]を押下して、GoogleドライブにGASを接続します。
connectGAStoDrive.png connectedGAS.png
  1. Google ドライブの画面で、再度[+ New]のボタンをクリックし、開いたダイアログで、[Google Apps Script]を選択すると、Google Apps Scriptの画面が開きます。
connectGAS.png ScriptEditor.png
  1. myFunction()の中に、SlackのWebhook URLを呼び出すコードを書きます。
  • SlackのIncoming Webhookの使い方は、Sending messages using Incoming Webhooksを参考にします。
    • 今回、メッセージのみPOSTするコードにしていますが、POSTするメッセージの書式設定なども行うことができるようです。
  • GASからWebhookを呼び出すには、Class UrlFetchAppfetchを使います。

こんなコードを書きました。

# 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 スクリプト実行

  1. 実行します。ツールバーの[Run]のアイコンをクリックします。
run.png
  1. Slackに投稿されました。
slack_notify.png

5. GASのトリガーの設定

定期投稿させるために、GASのトリガーの設定をします。

  1. トリガー設定画面を開きます。ツールバーの[Current project's triggers]アイコンをクリックします。
OpenTrigger.png
  1. [トリガーを追加]をクリックし、トリガーを設定します。
    今回、[イベントのソース]を[時間主導型]に設定し、1時間おきに起動するように設定しました。
triggers.png addTrigger.png
  1. 1時間おきにSlackに通知されるようになりました。
notifyBy1hour.png

やってみた感想

やりはじめてから1時間半くらいでなんとなく動くようになったので、とても取っつきやすかったです。
GASは、ドキュメントも充実していてできることも多そうですし、参考になる記事も検索するとたくさん出てきました。
ちょっと自動化してみたいときに気軽に使えるツールだと思います。

次は、情報収集のために、Twitterから定期的にあるキーワードで検索して、Slackに投稿する、というのをやってみたいと思います。
(ちなみに、TwitterとSlackの連携は、この手順ですぐできます)

11
14
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
11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?