(2024/1/15追記) "expirationTime"の書式が変わっていたので修正しました。
以前は"Fri, 30 Jun 2023 14:59:59 GMT"でしたが、"2023-6-30T14:59.59.999Z"に日付フォーマットが変わっていました。
(2023/7/25追記)Power Automate Ideasに機能リクエストが投稿されているのを見つけたので追記しました。投票をぜひ!
(2023/7/25追記) 一部のテナントでリクエストURLが変更になっている場合があるようなので追記しました。お使いのテナント(ユーザー?)がどちらで動作しているか要確認です。
私のテナントでは 「http://noam.presence~」にリクエストすると HTTPエラー301 が返ってきたので移行中なのかもしれません。
・https://noam.presence.teams.microsoft.com
・https://presence.teams.microsoft.com
はじめに
最近(2023年6月ごろ)Teams および Outlook on the Web に勤務場所を設定する機能が追加されました。Teams側ではプロフィールアイコンからさっと設定できるようになっています。
文書化されていないTeams の ネイティブ API?
勤務場所をPowerAutomateから設定できないかなーと調べたのですが、追加されたばかりの機能の為 Microsoft TeamsコネクタやGraph APIではまだサポートされていません。
というわけで以前やったようにWebブラウザの開発者モードでブラウザ版Teamsのアクセス先URLを調べてTeams ネイティブのREST APIを探るというアプローチです。
※このアプローチで実現できたとしても、文書化されていない Teams API を使用することになりMSのサポート対象外の使い方になりますので、運用環境では使用しない方が良さそうです。ここから先は興味本位で検証を進めます。
- EdgeでTeamsのチャネルにアクセス
- Edge の開発者モード→Networkを表示
- 勤務場所を変更
すると、それっぽいURLが取得できました。
https://noam.presence.teams.microsoft.com/v1/me/workLocation
2023/7/25修正urlが変更されていました
https://presence.teams.microsoft.com/v1/me/workLocation
何度か試行し変化を確認しましたが"location"の値は下記の対応になっているようです。
設定値 | 内容 |
---|---|
0 | クリア |
1 | 🏢オフィス |
2 | 🏘リモート |
"expirationTime"は、現地時間当日の23:59:59が設定されるようです。
Teamsで設定した場合は当日中有効で、翌日にはクリアされる動作となっているようです。
※2024/1/15追記 "expirationTime"の書式が変わっていた
以前は"Fri, 30 Jun 2023 14:59:59 GMT"でしたが、"2023-6-30T14:59.59.999Z"に日付フォーマットが変わっていました。
Power Automate クラウドフローで設定してみる
いつものSharePoint コネクタの「SharePoint に HTTP 要求を送信します」アクションで試してみます。
作成-日本時間23:59:59は下記の式です。ちなみに任意の日時でも問題なさそうです。
formatDateTime( addHours( addSeconds( addDays( formatDateTime(utcNow(),'yyyy-MM-ddT"00:00:00Z"'), 1 ), -1 ), -9 ),
'yyyy-MM-dd"T"HH:mm:ss".999Z"' )
「SharePoint に HTTP 要求を送信します」アクションの設定値はこちらです。
・サイトのアドレス
https://noam.presence.teams.microsoft.com
2023/7/25修正urlが変更されていました
https://presence.teams.microsoft.com
・方法:PUT
・URI
/v1/me/workLocation
・ヘッダー
Content-type : application/json
・ボディ
{ "location": 2, "expirationTime": "@{outputs('作成-日本時間23:59:59')}" }
このフローを実行すると設定に成功しました!
ついでに確認してみた
勤務場所の設定値の取得は…できない
方法をGETに変更したら取得できないかな…と期待して実行してみましたがエラーが返ってきました。残念ながらここでは取得は出来なさそうです。
さいごに
興味本位で試してみましたが、文書化されていない Teams ネイティブな? API を使用しています。MSのサポート対象外の使い方になりますので、運用環境では使用しない方が良いかと思います。
こちらでGraph API への機能追加リクエストがフィードバックされていましたので、興味がある方は投票して機能追加を待ちましょう!
「Microsoft Graph: Read / write new work hours and location」
Power Automate Ideas にも機能追加リクエストがフィードバックされていましたので、興味がある方は投票して機能追加を待ちましょう!