こんにちわ、 のりじ です。
「添付ファイル付きのメールを受信したら添付ファイルを自動でOneDriveに保存する」仕組みを作りたい場合、自動でフォルダを作成したい場合があると思います。
ですが、Power Automate / Azure Logic Appsで用意されているOneDriveコネクタには「フォルダーを作成する」というアクションが用意されていません。
今回は、それを解決する方法を毎回忘れてしまう自分用の備忘録的な記事です。
1. ワークフロー全体図
このように、トリガー1つ、アクション2つのシンプルなワークフローになります。
利用するコネクタ
- トリガー:Office 365 Outlook
- アクション:OneDrive for Business
2. トリガー
「新しいメールが届いたとき(V3)」を選択します。
トリガーの「添付ファイルを含める」と「添付ファイル付きのみ」の設定をしておくことで、添付ファイルがある場合のみトリガーが起動する形にできます。
3. アクション
今回のワークフローのメイン部分です。
「ファイルの作成」を選択します。
「Apply to each」が入っているのは、複数の添付ファイルがあった場合に対応するためで、この部分は自動で入ります。
このアクションのポイントは、「フォルダーのパス」のところに「/(スラッシュ)」と「式」を入力すること。
フォルダー名に使いたい形式は以下の内容を利用で。
01. 日付のみをフォルダー名にしたい場合
formatDateTime(addhours(utcnow(),9),'yyyy-MM-dd')
Power Automate の日時は変換しないと「(UTC-09:00) 協定世界時-09」なので、「addhours(utcnow(),9)」で変換します。
「yyyy-MM-dd」は「年-月-日」の表示。
02. 日付+時刻をフォルダー名にしたい場合
formatDateTime(addhours(utcnow(),9),'yyyy-MM-dd-HHmm')
01の表記に加え、日時を追加します。
「HH」が24 時間形式の時間 (00 ~ 23)、「mm」が分 (00 ~ 59)。
間に「:」とか入れたいところですが入れると実行時にエラーになるので注意。
03. 日付フォルダーを作成し直下に「メールの件名」のフォルダーを作成
concat(formatDateTime(addhours(utcnow(),9),'yyyy-MM-dd'),'/',triggerOutputs()?['body/subject'])
「concat」関数は任意の文字列を結合します。
「triggerOutputs()?['body/subject']」のところは動的なコネクタで選択します。
結果はこちら。
4. 最後に
このように、ファイルパスの表記を変更することでOneDrive内に自動でフォルダーを作成できます。
もう忘れるなよ私!w