🐙

Power Automate Desktopでメール メッセージに添付ファイルを追加する

2023/09/10に公開

Graph APIを使って添付ファイルを追加する

はじめに

Power Automate Desktopでメール 下書きメッセージを作成する の続きになります。
前回、作成したメッセージに添付ファイルを追加します。Graph APIを使います。

手順

  • メッセージIDを入手する (前回の記事を参照)
  • 添付ファイルの形式を変換する
  • HTTP 要求

メッセージIDを入手する

下書きメッセージを作成するフローからそのまま続けて作業することを前提にしています。

WebServiceResponseHeaders から「テキストのトリミング」でメッセージIDを取り出します。

パラメーター
元のテキスト %WebServiceResponseHeaders[8]%
モード 指定された 2 つのフラグの間にあるテキストを取得する
開始フラグ messages('
終了フラグ ')

添付ファイルの形式を変換する

Graph API (fileAttachment) で添付ファイルを追加するには、base64でファイルをエンコードする必要があります。以下のほかにもプロパティが存在しますが、とりあえずこの2つだけ押さえておけば良いかと思います。

プロパティ 説明
contentBytes Edm.Binary base64 でエンコードされたファイルの内容。
name String 埋め込み添付ファイルを表すアイコンの下に表示されるテキストを表す名前。これは、実際のファイル名にする必要はありません。

contentBytes に入れる値には、「ファイルを Base64 に変換する」アクションを使います。
name は、「実際のファイル名にする必要はありません。」とありますが、とりあえずファイル名そのままにします。今回は、「ファイル パス部分を取得」アクションでFileNameを取得しました。ちなみに、拡張子はちゃんとつけた方が良いような気がします。

HTTP 要求

HTTP → 「Webサービスを呼び出します」で添付ファイルを追加します。

パラメーター
URL https://graph.microsoft.com/v1.0/me/messages/%messageId%/attachments
メソッド POST
受け入れる application/json
コンテンツタイプ application/json
カスタムヘッダー Authorization: Bearer %accessToken%
要求本文 %fileAttachment%
要求本文をエンコードします Off
%fileAttachment%
{
  "@odata.type": "#microsoft.graph.fileAttachment",
  "name": "%fileName%",
  "contentBytes": "%fileContentBytes%"
}

これで添付ファイルがうまく追加されたと思います。

添付ファイルを複数追加したい場合

添付ファイルのファイルパスをリストで渡して、For eachで
「添付ファイルの形式を変換する → HTTP 要求」を繰り返すと複数ファイルの追加が可能です。

感想

ここまで、アプリケーション (クライアント) IDなしでGraph APIを試してみました。自分で遊ぶ分には目的は達成できましたが、さて業務で使ってもらうには…………難しいですね。個人的にはやっぱり業務メールをいきなり送信するのは怖いし下書き保存したいので。改めて、アクションに送信しかないのはどうかと思いました。


参考

https://learn.microsoft.com/ja-jp/graph/api/message-post-attachments?view=graph-rest-1.0&tabs=http

Discussion