毎月定例の作業に「●月のOneNoteを作成する」というものがあります。
原本をコピーして別フォルダに貼り付けて名前を変更する、という単純作業です。
裏側で勝手にやってくれれば良いのに、という思いつきから取り掛かりました。
Automateには「OneNoteを複製する」というコネクタがないので苦労しました。
フロー

詳細
トリガー:繰り返し

「毎月」として、1ヵ月ごとに繰り返します。
タイムゾーンは日本時間。
開始時刻に合わせて「1ヵ月」間隔で発動します。
不備時のリカバリ日数も含めてここでは「2024-12-25T15:00:00Z」としています。
時間への追加

「時間」で検索すると出てきます。
今の日時に単純に1ヵ月を追加するというブロックです。
式には以下を入れています。
utcNow()
変数を初期化する

頭の中の整理として、別ブロック追加しています。
値の式は以下の通り。
これがそのままファイル名になります。
formatDateTime(body('時間への追加'),'yyyyMM')
「body(‘時間への追加’)」は1ヶ月後を取得させたブロックですので、変更している方は適宜変更してください。
フォルダーのコピー

今回の肝①はこちらです。
OneNoteには複製用のコネクタがありません。
OneNoteの他コネクタと共に色々実験していて、どうやらSharePointでは「フォルダー」として認識されているらしいと気づき、試したら実行できました。
※2024/12/31現時点での環境
別のフォルダーが既に存在する場合、は
Copy with a new name(新しい名前で保存)を選択しておけば、もし過去の残骸があったとしてもエラーになりません。残骸に気付くために「Fail this action」で失敗させておくのも手ですね。
ちなみに「Replace」は上書きのため注意。
SharePointにHTTP要求を送信します

今回の肝②です。
複製し終わったOneNoteの名前を簡易に変更できるコネクタがありませんでした。これが一番すっきりします。
- サイトのアドレス
-
変更したいOneNoteが格納されているサイトを選択しましょう。
- 方法
-
POSTを選択します
- URI(以下を自分の環境に変更してください)
-
_api/web/GetFolderByServerRelativeUrl('/sites/kaisya/Shared%20Documents/OneNote/●●')/ListItemAllFields
-
- (‘/sites/kaisya/Shared%20Documents/OneNote/●●’)
ここでは kaisya というサイトの Share Document のフォルダに、OneNoteというフォルダを作り、その中に複製したOneNoteを格納しています。環境によっては「general」や「一般」が入ることも。
※「一般」は日本語で大丈夫です - Share Documentはスペースがあるので「%20」をつけないと、PowerAutomate上では成功してても、名前の変更がされません。
- 「●●」は変更したいOneNoteの、変更前のファイル名です。
直前に「フォルダーのコピー」を使用している場合は、そこから情報を取得できます。
DisplayNameを当てはめましょう。
- (‘/sites/kaisya/Shared%20Documents/OneNote/●●’)
- ヘッダー
-
Accept application/json;odata=verbose Content-Type application/json;odata=verbose IF-MATCH * X-HTTP-Method MERGE - ボディ
-
{ "__metadata": { "type": "SP.ListItem" }, "FileLeafRef": "●●" }
「●●」は変更後のファイル名です。
手投入でも問題ないですが、ここでは変数の「ファイル名」で入れ込んでいます。
結果

テスト実行するとこのように、指定したファイル名のOneNoteが出来上がっています。
ちなみに中身のセクションやページもまるごとコピーされていますので、これ以上手を加える必要がありません。
これで毎月の定例作業が1つ減りました。