2
2

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 1 year has passed since last update.

TeamsにWebhookを使って自動で定期的なリマインド投稿をする方法

Posted at

やりたいこと

定期的なリマインドを自動でTeamsに投稿したい。
例えば、「経費申請は明日が締め切りなので今日までに申請してね」とか忙殺されがちな月次事務処理の連絡とか。
自動でチーム全体に通知が届けば、「いつも前もって申請してよ」から解放されるはず。

まずはTeamsにWebhookで投稿をしてみる

事前準備

Webhookを受信する準備を整えます。

以下を参考に受信したいチームのチャネルに対して受信Webhookを作成する。

Webhookとは?

Webサービスやアプリケーションに用意されたURLにPostのHTTPリクエスト送ることで
Webサービスやアプリケーションに通知や更新の動作をさせること。

jsonのパラメータを渡してリクエストすることで、Webサービス側で受け取ったパラメータを利用した通知を表示してくれたりします。

↓を見るとわかりやすいと思います

Webhookしてみる

PowerShellを立ち上げてリクエストしてみる

$url = "受信WebhookのURL"
$body = ConvertTo-JSON @{
    title = '連絡'
    text = '経費申請は明日が締め切りなので今日までに申請してね'
}
$body = [Text.Encoding]::UTF8.GetBytes($body)
# Postする
Invoke-RestMethod -Method Post -Uri $url -Body $body -ContentType 'application/json'

こんな感じに投稿される

1_1.png

よしよし
あとはWindowsのタスクスケジューラに登録すれば‥

だと、PCの起動状態に左右されるし、
サーバーがあればそれを使ってもいいけど

どうせならGoogleAppScriptを使って定期的にリクエストをすることで
PCの電源をoffにしていても自動投稿される仕組みが望ましい。

スプレッドシートを開こう

1_2.png

スクリプトを追加する。

function postTeams() {
    const postContents = {
        "type": "message",
        "attachments": [{
            "contentType": "application/vnd.microsoft.card.adaptive",
            "contentUrl": null,
            "content": {
                "type": "AdaptiveCard",
                "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
                "version": "1.4",
                "body": [{
                    "type": "Container",
                    "items": [{
                        "type": "TextBlock",
                        "text": "経費申請の連絡",
                        "wrap": true,
                        "style": "heading",
                        "color": "Accent"
                    }],
                    "style": "accent"
                }, {
                    "type": "Container",
                    "items": [{
                        "type": "TextBlock",
                        "text": "経費申請は明日が締め切りなので今日までに申請してね",
                        "wrap": true,
                        "style": "default",
                        "size": "Medium",
                        "weight": "Bolder"
                    }, {
                        "type": "ActionSet",
                        "actions": [{
                            "type": "Action.OpenUrl",
                            "title": "今すぐ申請する",
                            "style": "positive"
                        }]
                    }]
                }]
            }
        };]
    };
    var webhookUrl = '受信WebhookのURL';
    var params = {
        method: 'post',
        contentType: 'application/json',
        payload: JSON.stringify(postContents)
    };
    var response = UrlFetchApp.fetch(webhookUrl, params);
}

titleとtextだけ渡してもいいけど、
AdaptiveCardを使うことで見た目のレイアウトも変更できる。

↓を使うことでGUI操作で簡単にデザインができるのでとても便利。

毎月指定した日に実行させるトリガーを作成する

締め切りは10日なので、毎月前日の9日の朝9時~10時に投稿させよう。

1_2.png

ちょっと見た目が際立つ感じで投稿されました

1_4.png
(※時間が違うのは手動で実行したから)

注意点

  • 残念なことにチーム全体やチャネル全体へのメンションがまだできない。(みんな気付いてくれるだろうか...)
    ※ユーザー個人にはメンションできるみたいです。
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?