この記事でわかること!
- Power Automateを使ってメール本文にOneDriveの画像を挿入する方法がわかる。
- データURIとBase64の概要がざっくりわかる。
OneDriveの画像をOutlookメールに埋め込みたい。
Power Automateを使って、OneDriveの画像をOutlookメールの本文に挿入してみました。
OneDriveの画像をOutlookメールに埋め込むには?
Outlookメール(HTMLメール)本文に画像を埋め込むにはHTMLのimgタグに外部公開された画像URLを渡す方法があります。
しかしOneDriveは誰でもアクセスできる場所ではないのでOneDriveの画像ファイルの共有アドレスをimgタグに渡しても、メール受信者は画像を表示することはできません。
そこでデータURIの仕組みを使って、画像ファイルを直接メールに埋め込んでみました。
「データURI」とは?
データURIとは、外部データを直接HTMLに埋め込む仕組み、と、それを表現した文字列(URI)です。
データURIとは?
https://ja.wikipedia.org/wiki/Data_URI_scheme
「Base64」とは?
データURIに直接画像バイナリデータを渡すのはセキュリティ上危険です。
なので、一般的によく利用されるBase64という変換形式にエンコードしてからデータURIに画像を渡します。
Base64とは一言でいうと画像などのバイナリデータをテキストに変換する際の変換方式です。
メールシステムの中で添付ファイルをエンコード・デコードするシーンで用いられているようです。私たちは普段日常的にメールを使っていますがBase64なんて言葉聞いたことない方も多いかと思います。それはメールアプリケーションがエンコードもデコードも内部でこっそり自動でやってくれているのでBase64なんて言葉を知らなくても添付ファイルを送ったり見れたりするわけですね。
Power AutomateでBase64にエンコード(変換)する方法は?
Power Automateの「Base64関数」を使う!
Power AutomateでBase64にエンコードするには、Power AutomateのBase64関数を使います。
Base64関数のリファレンス
データURIの使い方は?
データURIの構文は下記です。
- <MimeType>
- MimeTypeを入力します。
- <data>
- Base64にエンコード後の文字列を入力します。
画像ファイルの場合は、上記のデータURIの構文をHTMLのimgタグのsrcのバリューとして渡します。
.png画像を挿入する
<img src="data:image/png;base64,Base64エンコード文字列" />
.jpeg/.jpg画像を挿入する
<img src="data:image/jpeg;base64,Base64エンコード文字列" />
Power Automateでフローを作成する。
前置きが長くなってしまいましたが、実際にOneDriveの画像をメールに埋め込むための簡単なクラウドフローを作成してみたいと思います。
フローを作成する
OneDriveフォルダ内に画像を準備します。
メールではあまり大きなサイズの画像を表示することができません。このため初めてフローを作成するときはまずは10kb前後の小さい画像でテストすることをおすすめします。画像が表示できなかった場合、画像ファイルサイズが原因なのかそれ以外の関数の構文などに原因があるのかを特定しやすくするためです。
(画像ファイル名、signをsighと綴りミスってますが気にせずそのまま進みます。)
Power Automateポータル画面を開きます。
Power Automate ポータル画面
https://japan.flow.microsoft.com/
▲「作成」>「インスタントクラウドフロー」をクリックします。
今回はテストなのでお手軽にフローを実行できるインスタントクラウドフローにしました。
▲パラメータを入力します。
- フロー名を入力します。
- 「手動でフローをトリガーします」トリガーを選択します。
- 作成をクリックします。
▲「OneDrive Business」コネクタ(またはOneDrive)の中にある「ファイルコンテンツの取得」アクションを追加します。
フォルダをたどってファイルを選択します。(手入力でもOK)
▲「変数」コネクタ(組み込みグループ)の中の「変数を初期化する」アクションを追加します。
- 名前:Base64
- 種類:文字列
- 値:@{base64(body(‘ファイル_コンテンツの取得’))}
▲関数を手入力するときは必ず関数入力モードにしてから入力してください。
▲「変数」アクションをこの後も追加するので、両者を区別するためにアクションに名前を付けておきます。アクションの名前を変更するには、アクションの右側の3点リーダーをクリック>名前の変更をクリック>アクションの名前を入力します。
▲「変数を初期化する」アクションをもう一個追加します。これはメールの装飾をカスタマイズするためのCSSを記述するために使っています。
画像のサイズ・右寄せ・センタリング・フォントサイズ・フォントなどを調整する場合はCSSを使います。装飾をデフォルトのまま送信する場合はこのアクションは不要です。
Outlookコネクタの中の「メールの送信(v2)」アクションを追加します。v2というバージョンを表す数字はその時点で最新のもので構いません。
▲まずはメール本文を入力します。本文入力はコードビューに切り替えてから行います。コードビューに切り替えるには</>をクリックします。
▲本文を入力します。imgタグには変数の動的コンテンツを使います。
本文を入力したら、その他の値を下記のように入力します。今回はテストなので自分のアドレスを宛先としました。
- 宛先:宛先メールアドレス
- 件名:メール件名
- (オプショナル)添付ファイル:添付ファイルを選択
- (オプショナル)CC:CCメールアドレス
- (オプショナル)BCC:BCCメールアドレス
▲フローが完成しました。保存します。
フローを実行する
画面右上にある「テスト」をクリックしてテスト実行します。
今回はテストで自分のアドレスにメールしているのでメールを確認してみます。
画像を確認することができました。
メールに画像を埋め込むときの注意点
Webメールクライアントによっては画像を表示することができません。
Gmailなどの多くのWebメールクライアントではセキュリティ対策上、Base64を排除してしまうので画像を表示することができません。(Outlook・Outlook on the web(Outlook online)・Outlook Android版・Outlook iOS版では画像を表示することができました。)
画像の配置を位置やサイズを変更する方法は?
画像の配置・位置を調整するにはCSSを使って調整します。CSSを使えばその他フォントサイズ・フォントカラーなどのカスタマイズも可能です。簡単なCSSの使い方については下記の記事で解説しています。
参考URL
Power Automate for desktopでメールに画像を埋め込んでみた。
PADでローカルPCの画像を埋め込むケースをやってみました。OutlookとTeamsに同時に送信しました。
まとめ
Power AutomateでOutlookメールにOneDrive画像を埋め込む方法でした。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。