はじめに
Team会議をレコーディングした時に保存されるファイル、何日か経つと自動で削除されてしまいます。
動画ってサイズが大きいので、容量を圧迫しないための対策かと思います。
組織によっては設定を変えているところもあると思いますが、既定では120日で削除されます。
この設定が長すぎる!もしくは、短すぎる!あるいは、消さないでほしい!という人のために、自動で有効期限を変更できるように、Power Automateで変更する方法を探してみました。
方法
SharePoint REST API を使用することで変更できるようです。
実際にブラウザ操作した時のリクエストを、開発者ツールで見ることで確認できました。
Power Automate の標準アクションに、SharePoint に HTTP 要求を送信します
というアクションがあるのでこちらを使用していきます。
リクエスト形式
POST
で以下のようにリクエストを送信します。
_api/web/GetFileByServerRelativePath(DecodedUrl=@url)/SetExpirationDate?@url={ファイルの相対パス}
{"expirationDate":"yyyy-MM-ddTHH:mm:ssZ"}
日付は単純に ISO 8601 形式 ですね。
ちなみに、有効期限を削除(自動削除されないように)するには、日付の部分をnull
にします。
{"expirationDate":null}
GetFileByServerRelativePath
の部分はファイルを特定できれば良いので、下記リファレンスのようにGetFolderByServerRelativeUrl('/Folder Name')/Files('{file_name}')
や、GetFileByServerRelativeUrl('/Folder Name/{file_name}')
でもよいと思います。
今回は実際に使用されている形式に合わせて、GetFileByServerRelativePath
を使用します。
この形式の場合、URI末尾の?@url={ファイルの相対パス}
にファイルを特定するためのパスが必要になります。
OneDrive for Business の場合
少し前から仕様が変わって、会議のレコーディングは、レコーディングを開始した人(ボタンを押した人)ではなく、その会議の開催者のOneDrive に保存されるようになりました。
なので、このフローは自分が開催者である会議向けのフローになりますね。
(通常、他の人が開催した会議のレコーディングを編集する権限はないと思います)
ファイルのプロパティが取得できればなんでもいいんですが、今回はトリガーを選択したファイルの場合
にして手動でフローを実行しようと思います。
トリガーの時点で、有効期限に設定したい日付の入力もしておくことにしましょう。
最終的にSharePointコネクタでHTTPリクエストを送りたいので、自分のOneDriveのサイトURLが必要です。
マイ プロフィールの取得 (V2)
で個人用サイト
が取得できるので
、これを使いましょう。
続いて、有効期限を日本時間からUTC標準時に変換しておきます。
個人用サイトのアドレスから必要な部分を取り出し、ドキュメントライブラリを示すDocument
、続いてフォルダ名・ファイル名と続きます。
これらの文字を'
(シングルクォーテーション)で囲むと相対パスが作成できます。
フォルダ名・ファイル名はトリガーのfilePath
として取得できているので、残りの部分を個人用サイトを/
で区切ったりつなげたりいい感じに処理して作成します。
'/@{join(skip(split(outputs('マイ_プロフィールの取得_(V2)')?['body/mySite'],'/'),3),'/')}Documents@{triggerBody()?['entity']['filePath']}'
SharePoint(チームサイト)の場合
チャネル会議の場合はチームサイトのチャネル名フォルダの中にレコーディングが保存されます。
こちらもはトリガーを選択したファイルの場合
にして手動でフローを実行します。
トリガーで指定したサイトアドレスやライブラリ名はこの後でも使用するので、汎用性を意識して変数に格納しています。
@{trigger()?['inputs/parameters/dataset']}
@{trigger()?['inputs/parameters/table']}
トリガーの出力だけでは情報が不足していたので、追加でファイルのプロパティの取得
をしておきます。相対パスに必要な情報を取得しています。
取得した完全パス
や、サイトURLを使っていい感じに処理して作成します。
'/@{join(skip(split(variables('siteUrl'),'/'),3),'/')}/@{outputs('ファイルのプロパティの取得')?['body/{FullPath}']}'
おわりに
方法の解説として、手動トリガーを使ったフローを作成しました。
他にも、例えばファイルが作成されたとき
をトリガーにして、定期的なチームのチャネル会議の録画の有効期限を変更することもできると思います。
次回は、前回記事と組み合わせて、自分が参加したすべての会議の録画有効期限を変更するフローを作成しようと思っています!