2020年5月9日土曜日

Googleカレンダーの変更通知をTeamsのチャネルに投稿する

無料版Teamsを使い始めたら、次に共有カレンダーの通知が欲しくなり、GoogleカレンダーをTeamsのチャネルに投稿するための手順を調べました。

■利用するサービス
・無料版Teams
・Googleカレンダー
integromat
 ⇒自動化ツール。IFTTTやMicrosoft Power Automateみたいなものだがより色々できる。

1.Teamsの準備
Incoming Webhookアプリを追加してチャネルに投稿するWebhookURLを取得する。
「Teams Webhook」で検索したら色々出てくるので手順はそちらで。(こことか

2.Googleカレンダーの準備
通知したいGoogleカレンダーを用意する。
手順は割愛。

3.integromatの設定
まずサインアップ。メールアドレスでもGoogleやFacebookのアカウントを使ってもOK。
ログインできたらページ左のメニューから「Scenarios」をクリック。


画面右上の「Create a new scenario」をクリック。


使うモジュールを選択する画面が出てくるので、今回は「Google Calendar」と「HTTP」を選択。テキストボックスに入力すると名前でフィルターできるので、いい感じに絞ってクリックするとチェックマークがつく。選択したら右上のContinueをクリック。


最初にトリガーを設定。?をクリックすると選択したモジュールが出てくるのでGoogle Calendarをクリック。


一番上の、追加、変更、削除って書いているっぽいやつをクリック。


Addボタンをクリックして接続するGoogleアカウントの情報を入力すると、カレンダーの一覧が出てくるので通知したいカレンダーを選択する。
最後は一度に通知するイベントの最大値っぽいので、なんとなく50にしてみた。


いつから?って聞かれたのでとりあえず今からってしてみる。


次にActionを追加。下のWebっぽいアイコンをクリックし、一番上のMake a requestをクリック。


URL:1で取得したWebhook用のURL
Method:POST
Body type:ROW
Content type:JSON
Request content:ここを参考にいい感じに設定


■今回設定したRequest contentの内容
必要最低限の情報と予定へのリンクを出すようにした。
{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "themeColor": "0076D7",
    "title": "カレンダー名 {{switch(1.status; "confirmed"; if(formatDate(1.dateCreated; "YYYYMMDDHHmmSS") = formatDate(1.dateUpdated; "YYYYMMDDHHmmSS"); "登録"; "更新"); "cancelled"; "削除")}}",
    "text": "{{1.summary}}({{formatDate(1.start; "YYYY年MM月DD日 HH時mm分")}}~{{formatDate(1.end; "YYYY年MM月DD日 HH時mm分")}})",
    "potentialAction": [
      {
        "@type": "OpenUri",
        "name": "予定を開く",
        "targets": [
          { "os": "default", "uri": "{{1.htmlLink}}" }
        ]
      }
    ]
}

あとはGoogleカレンダーに予定を追加し、画面左下の再生ボタンをクリックして通知されるか確認。
問題なく通知されたらフロッピーアイコンをクリックして保存する。
有効にするには左下のトグルをクリックしてOnにする。デフォルトでは15分おきにイベントを取得してTeamsに通知する。

0 件のコメント:

コメントを投稿