PowerAutomateで受信メールに添付されたExcelファイルをOfficeスクリプトで操作する(Office Scripts)
メールを受信したときに添付されたExcelファイルをチームの共有フォルダに自動保存するついでに、officeスクリプトでExcelの加工や分析したいと思ったのでフローを作成してみました。この記事ではフローの作成方法について解説します。
Officeスクリプトの中身をカスタマイズすればいろいろなケースに使えるかなと思います。よろしければ最後までご覧ください。
作成するフロー図
作成する処理の流れは図の通りです。処理結果をTeamsで受け取るようにしています。
PowerAutomateフロー完成図
Power Automateのフローの完成図です。
Power Automateフロー作成
新しいメールが届いたときトリガーの作成
▲トリガーは、「新しいメールが届いたとき(v3)」を選択します。
今回はメール受信をトリガーとして、さらに件名でメールを絞ります。件名に複数のキーワードを使ってAnd検索やOr検索を行いたい方は、下記の記事が参考になるかもしれませんのでご覧ください。
変数を初期化するアクションの追加
▲Teamsに送るメッセージ用に変数を用意します。この中に、添付ファイルの名前と、スクリプトの結果を使って文字列を整形していきます。 「コントロール」コネクタの中の「変数を初期化」アクション
今回は複数の添付ファイルがあることも想定しているので変数を使っていますが、添付ファイルが一つの場合は無くても良いかもしれません。
添付ファイルの数だけループするアクションの追加
▲添付ファイルの数だけループする処理を作成します。
「出力」には、「新しいメールが届いたとき」トリガーで取得できる動的なコンテンツの中の「添付ファイル(メッセージの添付ファイル)」を選択します。
(ループの中の処理)添付ファイルをSharepointに保存するアクションの追加
▲Apply to eachの中にアクションを追加しています。まずは添付ファイルをSharepointに保存するアクションを追加します。
- フォルダ―のパス:
- 任意のフォルダを選択してください。
- ファイル名:
- 動的コンテンツの添付ファイル名をそのまま使います。
- ファイルコンテンツ:
- 動的コンテンツの「添付ファイルコンテンツ」を選択してください。
【注意!】添付ファイルをSharepointに保存する時に既に同じ名前のファイルがフォルダ内に存在する場合、この後のアクションでエラーになります。ファイル名に日付を付与するなどの工夫をしてください。
(ループの中の処理)Sharepointプロパティの取得アクションの追加
▲添付ファイルの保存が出来たので、ここで早速ファイルの操作をしていきたいところですが、スクリプトの実行するためにまずファイルのプロパティを取得する必要があります。
ID: ファイルの作成アクションの動的コンテンツ「ItemId」を設定します。
詳細オプションは特に設定しません。
(ループの中の処理)Officeスクリプトの実行
▲スクリプトを実行します。「Excel Online」コネクタの中の「スクリプトの実行」アクション
- 場所
- 添付ファイルを保存したSharepointサイトを選択します。
- ドキュメントライブラリ
- ファイルを保存したライブラリを選択します。
- ファイル
- 「ファイルのプロパティの取得」アクションで取得できる動的コンテンツ「識別子」を設定します。
(ループの中の処理)Teams通知メッセージ用文字列の整形
▲「スクリプトの実行」アクションで取得できる動的コンテンツ「Result」を使って、Teamsへ通知するメッセージ用の文字列を整形していきます。動的コンテンツ「Result」は、Officeスクリプトのコード内に「Return」文の記述がないと使えません。「コントロール」コネクタの中の「文字列変数に追加」アクション
変数の中の文字列は、下記のようにHTMLで見やすくしてみました。
/* 変数の値 */ <ul> <li><a href="ファイルリンク">”ファイル名”</a></li> <ul> <li>データの件数は、”result”です。</li> </ul> </ul>
Teamsへ通知するアクション
▲最後にTeamsへ通知するアクションを追加します。こちらのアクションはループの外側に作成してください。
「Teams」コネクタの中の「メッセージをフローボットとしてチャンネルに投稿する」アクションチーム、チャネルに任意のメッセージ送信先を選択し、メッセージに作成した変数を使います。これでフローは完成です。
テスト実行結果
▲フローが完成したのでテストしていきましょう。上図のようにデータ件数が異なる2つのExcelを添付したメールを、Outlookに送ってみます。
▲数秒でTeamsにメッセージが来ました。
ちゃんとそれぞれのデータ件数が正しく取得できていますね。成功のようです。
注意すること
スクリプトの内容を工夫すれば、エクセルを開かずにデータを取得したり加工したりできそうです。
ただ、Excel Onlineコネクタにはいくつか制限がありますので、利用する場合は事前に下記のドキュメントをご覧ください。
気になる制限(2021年8月1日現在)として、下記のようなものがあります。
Excel Online(Business)コネクタでサポートされているExcelファイルの最大サイズは25MBです。
コネクタは、Microsoft Excel Open XMLスプレッドシート形式(* .xlsx)のファイルのみをサポートします。
並べ替えに使用できる列は1つだけです。
感想
トリガーで自動起動できるのはOffice スクリプトの良いところですね。officeスクリプトの記事も投稿増やしていく予定です。気になる方はよろしければフォローお願いします!
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円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。