MENU

PowerAutomateでOneNoteを複製して名前の変更も行いたい

毎月定例の作業に「●月の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を当てはめましょう。
ヘッダー
Acceptapplication/json;odata=verbose
Content-Typeapplication/json;odata=verbose
IF-MATCH*
X-HTTP-MethodMERGE
ボディ
{
  "__metadata": { "type": "SP.ListItem" },
  "FileLeafRef": "●●"
}

「●●」は変更後のファイル名です。
手投入でも問題ないですが、ここでは変数の「ファイル名」で入れ込んでいます。

結果

テスト実行するとこのように、指定したファイル名のOneNoteが出来上がっています。

ちなみに中身のセクションやページもまるごとコピーされていますので、これ以上手を加える必要がありません。

これで毎月の定例作業が1つ減りました。

広告

目次