3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Teams会議のレコーディング有効期限を変更するPower Automate フロー

Posted at

はじめに

Team会議をレコーディングした時に保存されるファイル、何日か経つと自動で削除されてしまいます。
image.png

動画ってサイズが大きいので、容量を圧迫しないための対策かと思います。
組織によっては設定を変えているところもあると思いますが、既定では120日で削除されます。

image.png

この設定が長すぎる!もしくは、短すぎる!あるいは、消さないでほしい!という人のために、自動で有効期限を変更できるように、Power Automateで変更する方法を探してみました。

方法

SharePoint REST API を使用することで変更できるようです。
実際にブラウザ操作した時のリクエストを、開発者ツールで見ることで確認できました。

image.png

Power Automate の標準アクションに、SharePoint に HTTP 要求を送信しますというアクションがあるのでこちらを使用していきます。
image.png

リクエスト形式

POSTで以下のようにリクエストを送信します。

URI
_api/web/GetFileByServerRelativePath(DecodedUrl=@url)/SetExpirationDate?@url={ファイルの相対パス}
body
{"expirationDate":"yyyy-MM-ddTHH:mm:ssZ"}

日付は単純に ISO 8601 形式 ですね。
ちなみに、有効期限を削除(自動削除されないように)するには、日付の部分をnullにします。

body
{"expirationDate":null}

GetFileByServerRelativePathの部分はファイルを特定できれば良いので、下記リファレンスのようにGetFolderByServerRelativeUrl('/Folder Name')/Files('{file_name}')や、GetFileByServerRelativeUrl('/Folder Name/{file_name}')でもよいと思います。

今回は実際に使用されている形式に合わせて、GetFileByServerRelativePathを使用します。
この形式の場合、URI末尾の?@url={ファイルの相対パス}にファイルを特定するためのパスが必要になります。

OneDrive for Business の場合

少し前から仕様が変わって、会議のレコーディングは、レコーディングを開始した人(ボタンを押した人)ではなく、その会議の開催者のOneDrive に保存されるようになりました。
なので、このフローは自分が開催者である会議向けのフローになりますね。
(通常、他の人が開催した会議のレコーディングを編集する権限はないと思います)

ファイルのプロパティが取得できればなんでもいいんですが、今回はトリガーを選択したファイルの場合にして手動でフローを実行しようと思います。
image.png

トリガーの時点で、有効期限に設定したい日付の入力もしておくことにしましょう。
image.png

フロー全体はこんな感じです。
image.png

最終的にSharePointコネクタでHTTPリクエストを送りたいので、自分のOneDriveのサイトURLが必要です。
マイ プロフィールの取得 (V2)個人用サイトが取得できるので
、これを使いましょう。
image.png

続いて、有効期限を日本時間からUTC標準時に変換しておきます。
image.png

最後に、必要なファイルの相対パスを作成します。
image.png

個人用サイトのアドレスから必要な部分を取り出し、ドキュメントライブラリを示すDocument、続いてフォルダ名・ファイル名と続きます。
これらの文字を'(シングルクォーテーション)で囲むと相対パスが作成できます。
image.png

フォルダ名・ファイル名はトリガーのfilePathとして取得できているので、残りの部分を個人用サイトを/で区切ったりつなげたりいい感じに処理して作成します。

作成
'/@{join(skip(split(outputs('マイ_プロフィールの取得_(V2)')?['body/mySite'],'/'),3),'/')}Documents@{triggerBody()?['entity']['filePath']}'

揃えた情報を使ってリクエストを送信すれば完成です。
image.png

SharePoint(チームサイト)の場合

チャネル会議の場合はチームサイトのチャネル名フォルダの中にレコーディングが保存されます。

こちらもはトリガーを選択したファイルの場合にして手動でフローを実行します。
image.png

フロー全体はこんな感じです。
image.png

こちらもトリガーで日付を指定しています。
image.png

トリガーで指定したサイトアドレスやライブラリ名はこの後でも使用するので、汎用性を意識して変数に格納しています。

image.png

変数を初期化する:siteUrl
@{trigger()?['inputs/parameters/dataset']}
変数を初期化する:driveId
@{trigger()?['inputs/parameters/table']}

トリガーの出力だけでは情報が不足していたので、追加でファイルのプロパティの取得をしておきます。相対パスに必要な情報を取得しています。
image.png

image.png

取得した完全パスや、サイトURLを使っていい感じに処理して作成します。

作成
'/@{join(skip(split(variables('siteUrl'),'/'),3),'/')}/@{outputs('ファイルのプロパティの取得')?['body/{FullPath}']}'

リクエストを送信して完了です。
image.png

おわりに

方法の解説として、手動トリガーを使ったフローを作成しました。
他にも、例えばファイルが作成されたときをトリガーにして、定期的なチームのチャネル会議の録画の有効期限を変更することもできると思います。
image.png

次回は、前回記事と組み合わせて、自分が参加したすべての会議の録画有効期限を変更するフローを作成しようと思っています!

3
4
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
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?