Power Automate を利用して SharePoint Online のドキュメントライブラリに保存されたファイルのファイル名を変更したい。Power Automate のアクションを利用して簡単に実現できそうに思えますが、実はこれが意外にやっかいな問題です。

なぜなら、Power Automate の SharePoint コネクタには、ファイル名を変更するアクションが用意されていないからです。

こんなときには「SharePoint に HTTP 要求を送信します」アクションに頼ってしまいましょう。さっそく設定方法をメモしておきます。

本題に入る前に

標準で用意されているアクションでファイル名の変更っぽいことができないことはありません。既存のファイルを基に希望のファイル名で新しいファイルとして作成し、元のファイルを削除してしまえば良いわけです。同じような結果を得られますが、この方法はファイル名の変更ではありませんので、ファイルの過去のバージョン履歴なども失われてしまいます。

ただし、それでも構わないよということであれば、ファイルの再作成で簡単に済ませてしまうのもアリだと思います。

ファイル名の変更

ファイル名を変更する API を利用するためには、odata.type 値を知っておく必要があります。この値はライブラリによって異なるため、事前にそれを調べておく必要があるわけですが、それも Power Automate で「SharePoint に HTTP 要求を送信します」アクションを利用します。その値さえ知っていればあとは簡単です。

odata.type 値を調べる

odata.type 値は、Power Automate で次のようなフローを作成して調べます。

ファイル名を変更したいファイルと同じライブラリにある任意のファイルの情報を「パスによるファイル メタデータの取得」アクションで取得し、その次の処理では「SharePoint に HTTP 要求を送信します」アクションを下記のように設定しています。

項目設定値
サイトのアドレスファイルが保存されているサイトを指定
方法GET
URI_api/web/lists/GetByTitle(‘<ドキュメント ライブラリの名前>’)/items(ItemId)

ItemId は「パスによるファイル メタデータの取得」アクションから出力される値

実行後に「SharePoint に HTTP 要求を送信します」アクションの出力を確認してみましょう。

body に含まれる type の値が目的の odata.type 値です。今回の場合は、「SP.Data.DocLib1Item」となっています。勘の鋭い方であれば気づいたかもしれませんが、「SP.Data.<ライブラリのパス名>Item」という規則で作成されています。ただし今後の応用も考えて取得方法を知っておきましょう。

ファイル名を変更する

それではいよいよファイル名を変更しましょう。先ほど取得した odata.type 値を利用して「SharePoint に HTTP 要求を送信します」アクションを次のように設定します。

項目設定値
サイトのアドレスファイルが保存されているサイトを指定
方法POST
URI_api/web/lists/GetByTitle(‘<ドキュメント ライブラリの名前>’)/items(ItemId)

ItemId は「パスによるファイル メタデータの取得」アクションから出力される値
ヘッダーContent-Type: application/json;odata=verbose
If-Match: *
X-HTTP-Method: MERGE
ボディ
{
'__metadata': {
'type': 'SP.Data.DocLib1Item'
},
'FileLeafRef': '変更後のファイル名.pptx'
}

type の値に odata.type 値を指定し、FileLeafRef の値に変更後のファイル名を指定

あとはこれを実行すればファイル名が変更されているはずです。ファイル名の変更自体は簡単ですね。

さいごに

というわけで、 Power Automate を利用して SharePoint Online のドキュメントライブラリに保存されたファイルのファイル名を変更する方法でした。SharePoint の API では他にも数多くの操作ができますが、Power Automate の SharePoint コネクタはそれらをすべて網羅しているわけではありません。今回のように「SharePoint に HTTP 要求を送信します」アクションを利用できれば、Power Automate で実現できることも増えます。

ただし、そのためには SharePoint の API に関する知識が必要になりますので、そこの部分は開発者などの詳しい人に助けてもらいましょう。