Office365にも付随しているPower Automateで、OneDrive等に配置されたテキストファイルの中身のテキストデータを、フロー中に使用したいときにどうするか、という記事です。
本記事では、サンプルとして、以下の要件を満たすフローを作成してみます。
- OneDriveの特定のディレクトリにファイルが新規作成されたら、そのファイルの中のテキストデータをメール本文として、メールを送信する
- テキストファイルの中身は、HTML形式とする
メール送信アクションの性質上、テキストファイルの中身はHTMLとします。
なお、本記事では、ファイルの配置場所をOneDrive for Business、メール送信はOffice 365 Outlookを使用します。(通常のOneDriveやSharePointでも、同じことはできると思いますが、未検証です。)
フロー図
トリガー: ファイルが作成されたとき
「OneDrive for Business」コネクタの、「ファイルが作成されたとき」トリガーを使用します。マイクロソフトのドキュメントはこちら。
フォルダー
引数には、OneDrive for Businessの任意のフォルダを指定します。サブフォルダーを含める
引数をはい
にすると、手前で指定したフォルダ直下のみでなく、サブフォルダに作成されたファイルもトリガーの対象となります。コンテンツタイプの推測
は、通常ははい
にします。
本記事では、常にテキストファイルが新規作成されることを前提にしていますが、そうでない場合は、コンテンツタイプの推測結果をもとに、条件分岐等を挟むことも考えられます。
なお、テキストファイルについては、Power Automateでは、自動的に「UTF-8で符号化されているテキストファイル」であると判断するようです。よって、Shift-JIS形式のテキストファイルから文字列を抽出することは、おそらくできない(文字化けが発生する)と思われます。
(下記参考ページで、文字化けを回避する方法が紹介されていますが、テキストファイルを別のディレクトリへコピーするという用途向けの解説のため、今回の用途向けではありません。)
参考: Power Automate でテキストファイルの文字化けを回避する
アクション1: 変数を初期化する
手前のトリガーによって、ファイルコンテンツが取得できるのですが、そのままだと、一律でバイナリ形式として認識され、直接、メールの文面に使用できません。しかし、「変数を初期化する」アクションを使用して、このファイルコンテンツを値とした文字列変数を定義すると、当該変数の値には、テキストファイルの中のテキストがそのまま入るようです。
名前
引数には、文字列変数につける好きな名前を指定します。種類
引数は文字列にします。値
引数には、手前のトリガーで取得されたファイルコンテンツを指定します。
参考: How to read unknown text file namess with flow
アクション2: メールの送信(V2)
マイクロソフトのドキュメントはこちら。
宛先
・件名
引数には、任意の値を指定します。本文
引数には、手前で定義した変数を指定します。その他の引数は、必要に応じて指定します。
試してみる
トリガーで対象としたディレクトリに、以下のようなテキストファイルを新規作成してみます。
これはテストメールです。<br/>
この文は、テキストファイルの文章です。
すると、数分後に、指定した宛先にメールが飛んできました。( 本題とはずれますが、本記事で使用した「ファイルが作成されたとき」トリガーはすぐには発動されず、10分~20分程度かかる場合もあるようです。 2024年4月現在は、ファイルが作成されたかどうかを確認する頻度を設定できるようなので、すぐ発動させることもできる様子です。)