Power Automateを動画で学ぼう!Udemyキャンペーン中

Power Automateでメールに添付されたExcelに自動でスクリプトを実行する方法

目次

PowerAutomateで受信メールに添付されたExcelファイルをOfficeスクリプトで操作する(Office Scripts)

メールを受信したときに添付されたExcelファイルをチームの共有フォルダに自動保存するついでに、officeスクリプトでExcelの加工や分析したいと思ったのでフローを作成してみました。この記事ではフローの作成方法について解説します。

じょじお

Officeスクリプトの中身をカスタマイズすればいろいろなケースに使えるかなと思います。よろしければ最後までご覧ください。

作成するフロー図

じょじお

作成する処理の流れは図の通りです。処理結果をTeamsで受け取るようにしています。

PowerAutomateでメールに添付されたExcelファイル分析フローチャート

PowerAutomateフロー完成図

じょじお

Power Automateのフローの完成図です。

添付ファイルの処理のPowerautomateフロー1
添付ファイルの処理のPowerautomateフロー2
添付ファイルの処理のPowerautomateフロー3
フロー完成図

Power Automateフロー作成

STEP

新しいメールが届いたときトリガーの作成

メールトリガーの設定

▲トリガーは、「新しいメールが届いたとき(v3)」を選択します。

今回はメール受信をトリガーとして、さらに件名でメールを絞ります。件名に複数のキーワードを使ってAnd検索やOr検索を行いたい方は、下記の記事が参考になるかもしれませんのでご覧ください。

STEP

変数を初期化するアクションの追加

変数の設定

▲Teamsに送るメッセージ用に変数を用意します。この中に、添付ファイルの名前と、スクリプトの結果を使って文字列を整形していきます。 「コントロール」コネクタの中の「変数を初期化」アクション

今回は複数の添付ファイルがあることも想定しているので変数を使っていますが、添付ファイルが一つの場合は無くても良いかもしれません。

STEP

添付ファイルの数だけループするアクションの追加

Powerautomate Apply to eachの設定

▲添付ファイルの数だけループする処理を作成します。

「コントール」コネクタの中の「Apply to each」アクション

「出力」には、「新しいメールが届いたとき」トリガーで取得できる動的なコンテンツの中の「添付ファイル(メッセージの添付ファイル)」を選択します。

STEP

(ループの中の処理)添付ファイルをSharepointに保存するアクションの追加

Powerautomateファイルの作成アクションの設定

▲Apply to eachの中にアクションを追加しています。まずは添付ファイルをSharepointに保存するアクションを追加します。

「Sharepoint」コネクタの中の「ファイルの作成」アクション

  • フォルダ―のパス:
    • 任意のフォルダを選択してください。
  • ファイル名:
    • 動的コンテンツの添付ファイル名をそのまま使います。
  • ファイルコンテンツ:
    • 動的コンテンツの「添付ファイルコンテンツ」を選択してください。

【注意!】添付ファイルをSharepointに保存する時に既に同じ名前のファイルがフォルダ内に存在する場合、この後のアクションでエラーになります。ファイル名に日付を付与するなどの工夫をしてください。

STEP

(ループの中の処理)Sharepointプロパティの取得アクションの追加

ファイルのプロパティの取得の設定

▲添付ファイルの保存が出来たので、ここで早速ファイルの操作をしていきたいところですが、スクリプトの実行するためにまずファイルのプロパティを取得する必要があります。

「Sharepoint」コネクタ → 「ファイルのプロパティの取得」

ID: ファイルの作成アクションの動的コンテンツ「ItemId」を設定します。
詳細オプションは特に設定しません。

STEP

(ループの中の処理)Officeスクリプトの実行

Officeスクリプトの実行

▲スクリプトを実行します。「Excel Online」コネクタの中の「スクリプトの実行」アクション

  • 場所
    • 添付ファイルを保存したSharepointサイトを選択します。
  • ドキュメントライブラリ
    • ファイルを保存したライブラリを選択します。
  • ファイル
    • 「ファイルのプロパティの取得」アクションで取得できる動的コンテンツ「識別子」を設定します。
STEP

(ループの中の処理)Teams通知メッセージ用文字列の整形

文字列変数に追加

▲「スクリプトの実行」アクションで取得できる動的コンテンツ「Result」を使って、Teamsへ通知するメッセージ用の文字列を整形していきます。動的コンテンツ「Result」は、Officeスクリプトのコード内に「Return」文の記述がないと使えません。「コントロール」コネクタの中の「文字列変数に追加」アクション

変数の中の文字列は、下記のようにHTMLで見やすくしてみました。

/* 変数の値 */
<ul>
    <li><a href="ファイルリンク">”ファイル名”</a></li>
    <ul>
        <li>データの件数は、”result”です。</li>
    </ul>
</ul>
STEP

Teamsへ通知するアクション

メッセ―ジをフローボットとしてチャンネルに投稿する

▲最後にTeamsへ通知するアクションを追加します。こちらのアクションはループの外側に作成してください。

「Teams」コネクタの中の「メッセージをフローボットとしてチャンネルに投稿する」アクションチーム、チャネルに任意のメッセージ送信先を選択し、メッセージに作成した変数を使います。これでフローは完成です。

テスト実行結果

テスト図解

▲フローが完成したのでテストしていきましょう。上図のようにデータ件数が異なる2つのExcelを添付したメールを、Outlookに送ってみます。

Teams通知結果

▲数秒でTeamsにメッセージが来ました。

じょじお

ちゃんとそれぞれのデータ件数が正しく取得できていますね。成功のようです。

注意すること

じょじお

スクリプトの内容を工夫すれば、エクセルを開かずにデータを取得したり加工したりできそうです。

ただ、Excel Onlineコネクタにはいくつか制限がありますので、利用する場合は事前に下記のドキュメントをご覧ください。

気になる制限(2021年8月1日現在)として、下記のようなものがあります。

Excel Online(Business)コネクタでサポートされているExcelファイルの最大サイズは25MBです。

コネクタは、Microsoft Excel Open XMLスプレッドシート形式(* .xlsx)のファイルのみをサポートします。

並べ替えに使用できる列は1つだけです。

引用元:Excel Online (Business) コネクタ リファレンス ドキュメント

感想

じょじお

トリガーで自動起動できるのはOffice スクリプトの良いところですね。officeスクリプトの記事も投稿増やしていく予定です。気になる方はよろしければフォローお願いします!

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Power AutomateのKindle書籍です。

▲Kindleと紙媒体両方提供されています。クラウドフローもデスクトップフローも、どちらも自動化したい方におすすめです。

Power Automateを動画で学びたい方はコチラ

▲Udemyで唯一のPower Automateに関する講座です。セール時は1500円~2000円弱の価格になります頻繁にセールを実施しているので絶対にセール時に購入してください。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

ノンプログラマーでも自動化スキルを身につける。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる