はじめに
OneDrive や SharePoint にはファイルの要求機能という、フォルダの共有リンクを作成するのではなく対象者にファイルをアップロードしてもらうためのファイル要求リンクを作成することができます。
こちらの機能を有効にするにはこちらをご覧ください。
この機能の利点は、共有されたユーザはフォルダに直接アクセスできるわけではないので、フォルダーの内容を表示したり、ファイルを編集、削除、またはダウンロードしたり、他のユーザがファイルをアップロードしたかを確認することもできません。
これのリンクをPower Automateを用いて作成したかったのですが、標準アクションではできなかったので「SharePoint に HTTP 要求を送信します」アクションで実現してみました。
この記事ではそのやり方をまとめています。
やり方
今回はOneDriveにあるフォルダに対してファイルの要求リンクを作成していますが、どのサイトを対象にするか?が変わってくるだけですのでSharePointでもできると思います。
フォルダのIDを取得する
ファイルの要求リンクを作成したいフォルダのIDを取得します。
これは「パスによるフォルダー メタデータの取得」アクションで取得できますね。
取得したいフォルダが存在するサイトのアドレスとフォルダーのパスを選択 or 入力するだけですので割愛。
SharePoint REST APIによりファイルの要求リンクを取得する
ファイルの要求リンクは \ShareLink
により取得することが可能です。
このリクエストは共有リンクを作成する際に利用するものですね。
このリクエストを送信する際にどのような種別のリンクを作成するか指定することで、作成するリンクの種別を切り替えることができます。
そのプロパティは linkKind
ですね。
どのような値を設定すればどのような種別になるのかについては、以下ドキュメントをご確認ください。
linkKind | Value |
---|---|
AnonymousEdit | 5 |
AnonymousView | 4 |
Direct | 1 |
Flexible | 6 |
OrganizationEdit | 3 |
OrganizationView | 2 |
Uninitialized | 0 |
ファイルの要求リンクを作成する際は "6" ですね。
さて、これらを踏まえて実際設定すべきアクションをみていきましょう。
ボディには作成アクションの「ボディ」で作成したものを設定しています。
Body
{ "request": { "createLink": true, "settings": { "allowAnonymousAccess": true, "linkKind": 6, "expiration": null, "restrictShareMembership": false, "updatePassword": false, "password": "", "description": "テスト", "role": 8, "applicationLink": false, "limitUseToApplication": false } } }
ファイルの要求リンク作成時はパスワードは設定できないので、これらの中で設定変更する箇所といえば "description"ですね。
上記のJSONでは"テスト"が設定されていますが、この設定によって以下のように表示されます。
ここに表示される文言を変更したい場合は "description"の値を変更してください。
続いてREST APIを送信している箇所(HTTP要求)の設定値ですが以下のようにしています。
サイトのアドレス
[フォルダがあるサイトのアドレス]
方法
POST
_api/web/lists/GetByTitle('Documents')/items('@{outputs('パスによるフォルダー_メタデータの取得')?['body/ItemId']}')/ShareLink
ヘッダー
{ "Accept": "application/json;odata=verbose" }
ボディ
@{outputs('Body')}
URIの GetByTitle('Documents')
が環境によって異なってくることあるかな?ということぐらいですかね。
以上でファイルの要求リンクを取得することができます!
余談ですがリンクだけ取得したい場合は以下で取得できます。
@{body('SharePoint_に_HTTP_要求を送信します')?['d']?['ShareLink']?['sharingLinkInfo']?['Url']}
結構階層深いですね。
おわりに
ファイルの要求リンクを作成するアクションも早く標準アクションとして追加して欲しいですねー