oViceのスペース入室状況をTeamsに定期的に送信する方法


oViceのスペース入室状況をTeamsに定期的に送信する方法

所要時間30-40分
oViceのスペースに誰が入室しているか、離席しているかとそれぞれの人数をMicrosoft Teamsに定期的(30分間隔)に送信する方法をご説明します。
Google Apps Script(GAS)を利用していますが
写真付きで説明してるので、コードがわからない人でも大丈夫です!

前提条件

  • Microsoft Teamsの管理者権限を持っている
  • oViceで自分のスペース(アドミン権限)を持っている
  • Googleドライブにスプレッドシートを設置、ウェブアプリをデプロイできる(コーディング不要)

実現方法

1.oViceのWebhookでGoogleドライブ上のスプレッドシート(oVice入退出状況定期送信_Teams)を更新する。(メールアドレスで照合してファイル内になければ行追加、あれば行の「入退出状況」を更新)
※下図は入室時のファイル出力イメージです。

2.スプレッドシートから「GAS+Teams Incoming Webhooks」 でTeamsへoVice入退出状況メッセージをトリガーを利用して定期的に送る。

☆処理の流れイメージ

設定項目

1.Teams Incoming Webhooksの設定
2.Googleスプレッドシートの設置、GASの修正・デプロイ
3.GASのトリガー設定
4.oViceの管理画面でWebhookのURL、PostDataを登録する

1. Teams Incoming Webhooksの設定

oViceの通知をMicrosoft Teamsに飛ばす方法
上記リンク記事の「1.Teamsでincoming Webhookの設定を行う」を実施済みかにより手順が変わります。

実施済みの方

Teams Incoming WebhooksのURLをコピーしておくだけで大丈夫です。

未実施の方

上記リンク記事のTeams側の設定(1と2)を実施する

-1. 1.Teamsでincoming Webhookの設定を行う
のみ実施する。
※「2.oViceの管理画面でWebhookのURLを登録する」は実施しない。

2. Googleスプレッドシートの設置、GASの修正・デプロイ

① 下記URLからGoogleスプレッドシートを開き、[ファイル]-[コピーを作成]でご自身のアカウントのGoogleドライブ上にコピーしてください。

oVice入退出状況定期送信_Teams
※ファイル名は任意のものに変えて構いません。シート名を変えるとスクリプトの修正が必要となるため変更しないでください。

② コピーしたスプレッドシートを開き、「ツール」メニューから「スクリプト エディタ」を開きます。

③ 開いたApps Script画面で「SPACE_NAME」、「POST_URL」、「NOTIFY_START_HOUR」、「NOTIFY_STOP_HOUR」を修正。

  • SPACE_NAME:任意のoViceスペース名
  • POST_URL:「1. Teams Incoming Webhooksの設定」の最後でコピーしたURL
  • NOTIFY_START_HOUR:通知開始時間(hour)半角数字(0~22) ※NOTIFY_STOP_HOURより小さい値を設定してください
  • NOTIFY_STOP_HOUR:通知開始時間(hour)半角数字(1~23) ※NOTIFY_START_HOURより大きい値を設定してください 初期設定は9:00~18:00の間で定期送信するようになっています。

④修正内容を保存

⑤ 「デプロイ」-「新しいデプロイ」を選択。

⑥ 「次のユーザとして実行」で自分のアカウントを選択し、「デプロイ」を選択。

説明やアクセスできるユーザーは任意のものを選択

⑦ 「アクセスを承認」を選択。

⑧自分のアカウントを選択。

⑨ 「Allow」を選択。

⑩ 「URL」下の「コピー」を選択し、「完了」を選択。

3. GASのトリガー設定

① サイドバーの「トリガー」を選択する

② 「トリガーを追加」を選択する

③ 赤枠で画像の値を選択し、「保存」を選択する

これでスプレッドシート側の設定は完了です。

4. oViceの管理画面でWebhookのURL、PostDataを登録する

管理者権限を持つユーザでoViceにログインし、管理者メニューを開く。

① サイドバーの「スペース設定」を選択する

② Webhookの「追加」を選択する

③ トリガーにするイベントとWebhookのURL、送信内容を設定する

下記、項目を設定し、OKボタンを選択します。

When(イベントの種類):

enter, leave, away, comebackの4件を追加します。
- enter: スペースへの入場した時
- leave: スペースから退場した時
- away: 一時離席(コーヒーカップ)をクリックした時
- comeback: 一時離席から戻った時

HOOK URL

「2-⑨」の手順でコピーしておいたウェブアプリのURLを貼り付けてください。
4件全て同じURLで大丈夫です。

POST DATA(送信内容)

フォーマットは下記になります

- 以下を、それぞれ該当のイベントのPOST DATAに設定
- {"text":"enter,{{name}},{{email}}"}
- {"text":"leave,{{name}},{{email}}"}
- {"text":"away,{{name}},{{email}}"}
- {"text":"comeback,{{name}},{{email}}"}

設定後はこんな状態となります。

動作確認

以上で設定完了となります!!
oViceの該当スペースで入退出、離席等の操作をしてみて通知が飛ぶか試してみてください。
うまく設定できている場合、開始時間が来たらこんな風に指定したチャネルに入室中、離席中の人数とメンバーのメッセージが終了時間まで飛ぶはずです。

補足(カスタマイズ等)

アカウントのメールアドレスあり・なしによる違い

アカウントのメールアドレス設定あり・なしにより下記の違いがあります。
①メールアドレスありアカウントは本人の最新状況を取得可能
②メールアドレスなしアカウントはアカウント名で状況確認するので下記に当てはまる場合、正確なデータが取れない場合があります。
 ・同一のアカウント名のユーザーがスペースにいる場合
 ・スペース滞在中にアカウント名を変更した場合(名前変更後に離席などアクションした場合は名前が更新されます。)

複数スペースご利用の場合

本記事は単一スペース用の記事となります。
複数スペースをご利用の場合はスペース毎にスプレッドシートをGoogleドライブに置いて「2.Googleスプレッドシートの設置、GASの修正・デプロイ」、「3.oViceの管理画面でWebhookのURL、PostDataを登録する」の手順を実施するとスペース毎の入退出状況をTeamsに送れます。
※スペース毎にメッセージを送るTeamsのチャネルを分けたい場合は、「1. Teams Incoming Webhooksの設定」もスペース毎に実施する必要が出てきます。

スプレッドシートについて

GASでは難しいコードは書いておりませんのでご自由にカスタマイズしていただいて構いません。また勤怠ツールによってはスプレッドシートではなく勤怠ツールをカスタマイズして「oVice→勤怠ツール→Teams」の構成で同じようなことが実現可能だと思います。

テストについて

利用人数が多い場合等、詳細なテストは実施しておりませんのでご承知おきください。