LoginSignup
4
1

More than 3 years have passed since last update.

Google Cloud SchedulerでMicrosoft Teamsに時報を投げる

Last updated at Posted at 2019-09-20

目的

定期実行といえばcron。無料でcronっぽいことをしてくれるGASの記事はよく見かけるけど、時間が少し不安定だったり色々とかゆいところに手が届かない。
というわけで、GCPにあるCloud Schedulerなるサービスを触ってみる。
同様の記事は少ない気がしたので、自分なりのメモも兼ねる。

Microsoft TeamsやGCPのコンソール自体の操作にはあまり触れないのであしからず。

やったこと

構成を考える

Microsoft Teamsには、連携できるアプリがいっぱいあるらしく、その中で今回はIncomming Webhookに目をつけました。

Webhookは、超絶ざっくり言うと特定のPOSTリクエストが来たときに反応するよ、っていう技術です。つまり、Teamsのとあるチャンネルに自動で何かを投稿したいなら、「hogehoge.com」にリクエストをぶん投げてね、ってことです。

そして、Google Cloud Schedulerでは時間指定で特定の動作を行うことができるのですが、この特定の動作の種類が「App Engine HTTP」、「HTTP」、「Pub/Sub」の3種類です(2019/9/20現在)。

この中のHTTPがまさにHTTPリクエスト(今回だとPOST)のことなので、まとめると
・Cloud Schedulerで時間を指定して特定の動作を行う
・特定の動作を「hogehoge.comへリクエストを送信する」に設定する
以上、というわけであります。

Teams側の設定

さて、チャンネルにメッセージを投稿するには「hogehoge.com」へリクエストを送ると言いましたが、もちろんこれはダミーURLです。
本当は、チャンネルごとにこれが存在する(発行できる)ので、発行していきます。

まずは、TeamsチャンネルでIncomming Webhookを連携する必要があります。

アプリの連携は、[チームの管理]→[アプリ]で行うことができます。
こんな感じの画面です。
image.png

連携を始めるときには、画像右上部分の[アプリの連携]から[Incomming Webhook]を検索して連携します。

次に、[チームに追加]を選択します。
image.png

すると、どのチャンネルに投稿したいのか聞かれるので、チャンネルを選択します。
私は「実験」チャンネルを作って、そこに投稿することにしました。

image.png

[コネクタを設定]をクリックすると、名前と画像を決める欄が出てきます。
名前は必須ですが、適当にtestとしておきます。
画像は実際に時報を送ってくる奴のアイコン画像になります。とりあえずデフォルトのまま進めます。

image.png

すると、同じ画面の下部に発行されたURLが出てきますが、これが前述の「hogehoge.com」に該当します。これは使いますので、忘れずにコピーしておきます。

image.png

Cloud Schedulerの設定

GCPのコンソールへログインします。
左側のハンバーガーボタンから、下の方にある「Cloud Scheduler」を選択します。

image.png

すると、こんな感じの画面になるので、「Create Job」を選択します。
image.png

名前、頻度、タイムゾーン、ターゲット(何をするのか)をそれぞれ決めていきます。
image.png

私はこんな感じで設定しました。
頻度のところは、cronと同じ書き方です。詳しくはここを見るか、cronでググってください。

タイムゾーンは日本、ターゲットはHTTPリクエストを送るのでHTTPとなります。
URLは、先程Teams側で発行されたものをコピペします。
WebhookはそもそもPOST前提なので、HTTPメソッド部分はPOSTでOKです。

本文のところは、JSONで送ります。
今回は{text:"Hello!"}としてみました。
JSONデータのキー部分はtextと決まっていますが、メッセージ本体は好きな内容でOKです。
(例:{ text: "おやすみなさい" } 等)

最後に作成ボタンをクリックすると、ジョブが完成します。
ジョブ一覧画面に戻るので、右側の「今すぐ実行」をクリックして挙動を確かめます。

image.png

無事に届きました!!
ちゃんと1分おきにも実行されています。

応用する

Cloud SchedulerではHTTPリクエストを叩いているだけですが、構成さえ工夫できれば自前の処理を埋め込むこともできます。
例えば、Cloud SchedulerでGASのスクリプトを叩く→GASのスクリプト内でTeamsへのPOSTリクエストを送信 のようにすれば、例えば時報だけでなく天気予報APIを使って天気を投げたりすることもできますね。

まとめ

  • Cloud SchedulerとTeamsを使って正確な時報を投げることができる!
  • Cloud Schedulerの料金表はここ
  • 2019/9/20現在、アカウントあたり3ジョブまでなら無料!
4
1
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
4
1