fc2ブログ

Power AutomateでOutlookメールを抽出する

 MicrosoftのRPA(Robotic Process Automation)ツールのPower Automateを久々に触ってみました。昨年3月のPDFファイルからのテキスト抽出に使って以来です。

 今回は日頃使っているOutlookメールで所定フォルダに仕分けられているメールを全抽出し、テキストファイル(csvファイル)に書き込みました。全体のフローは以下の通りでループはありますが、6ステップです。順を追って説明します。MailListSave1_230122.png
1. メールメッセージの取得
 IMAPサーバからメールを読み込むための設定を行います。MailListSave2_230122.pngIMAPサーバ、ポートの設定内容は、事前にOutlookを立ち上げて確認しておきます。MailListSave3_230122.pngユーザ名、パスワードはOutlookに接続するために使っているものを設定しました。
 メールフィルタはターゲットの仕分けしたメールフォルダ(今回は「日経Myニュース」)を設定しました。取得されたメールは変数RetrievedEmailsに保存されます。MailListSave4_230122.png
2. 新しいリストの作成
 ターゲットのメールフォルダ内には複数のメールがあるので、各情報をリスト変数Listに代入していきます。MailListSave5_230122.png
3.〜5. データ読み込みのループ
 ループはFor eachを使って、RetrievedEmailsの数だけ繰り返す設定です。ループ時のカウンタの変数はCurrentItemです。MailListSave6_230122.png For eachループの中で処理する内容は以下の通りで、メールの本体(BodyText)部分をリスト(変数List)に追加していきます。MailListSave7_230122.png
6. CSVファイルに書き込み
 変数Listの内容をローカルのストレージに保存します。csvファイルでなく、txtファイルでも良いですが、ここではMailList.csvとしました。MailListSave8_230122.pngMailListSave9_230122.png
 実行するとフォルダ内の475件のメールを順次読み込んでいきました。実行速度はそれほど高速ではなく、3分程度かかりました。csvファイルには約50,000行の結果が出力されていました。左側が出力csvファイルで、右側が該当するメールです。MailListSave10_230122.png
 今回はメール本体のそのままの文章を出力しましたが、必要な部分をもう少し絞り込んで、整理整頓させて出力することもできそうです。Power Automateですが、プログラミングせずに、ノーコード・ローコードで希望の処理が実行できることで、注目されていますが、プログラミングに慣れている人からすると逆に面倒臭い感がありますね。これも慣れの問題と思いますが・・。また、何かにPower Automate使ってみようと思います。
スポンサーサイト



Line Notifyを使う(3)

 前回の続きです。大晦日にWi-Fiルータを交換して、Ambientにデータを上げているシステムでデータが更新されていないことに気付きました。過去のブログにある通り、Wi-Fiルータのssidとpasswordをコード上に記載していたので、それらを修正してすぐに終わる予定でしたが、以下のエラーが発生してハマってしまいました。Error1_230115.pngesptool.FatalError: Timed out waiting for packet header

ESP8266は以前からよく利用していた無線マイコンですが、プログラムをマイコンに書き込む際、結構面倒臭いんですよね。ただし、今回は何度やっても同じエラーが出て先に進めません。

実行環境は以下の通りです。
PC
  MacBookAir (11-inch、Early 2014)
  MacOS Big Sur 11.7.1
  CPU Intel Core i5
  Memory 4GB
Arduino 1.x.x (後々2.0.3にUpdate。旧Versionの記録なし)

プログラムは今までESP8266の書き込みに何度も使っているMAX3232ECPEを利用した自作ライターで書き込みました。

うまく行かない試行錯誤の中、簡単なコードである「Lチカ(Blink)」で動作確認しても同じエラーが発生します。また、Arduinoを最新版(1/15現在:Version 2.0.3)入れ替えても同じ現象です・・。Error2_230115.png
対策サイトを確認すると、アップロードスピードが合っていないので、Upload Speedの値を"9600"まで落とすと良いと書いてありましたが、ArduinoのUpload Speedは"57600"が最小で、"9600"は設定できませんでした。Setting_230115.png
原因が分からずに、現時点で解決策を見出せていません・・。万事休す。
MacBookAirでなく、Windows11PCにArduinoをインストールして確認しても同じ不具合が発生しました・・。

直近では2022/11/13のブログにESP32ですが、今回と同じライターで書き込んで問題ありませんでした。ESP8266(ESP-WROOM-02)は1年以上前の2021/08/29のブログでお話ししたのを最後に使っていません。

ライターは最近まで使っていたので、その後、断線等で故障しない限り、こういうことは起こり得ないかな?と思います・・・(要:ESP32で再確認)。ESP8266の故障も考えましたが、新品と交換しても同じエラーが出ていたので、原因は別の所にあるのではないかと思います。

結局、分からずじまいで、遊休のM5StickCとENV II Hatを用いて温度、湿度、気圧を測定し、AmbientとLine Notifyにデータを上げるシステムを製作することにしたのは前回お話ししました。次回はこれらについて詳しくお話します。

Line Notifyを使う(2)

 あっという間に年末年始の休暇が終わって、明日(1/4)から仕事ですね。今回の年末年始は、昨年と異なり、雪や日中の雨も降らず、晴れた日が多かったように思います。休日の散歩も天気に左右されることなく実行できました。
 以前のブログで、自宅の温度、気圧、湿度をBME280とESP8266で収集して、Ambientに飛ばしているシステムがあるので、それにLine Notifyの機能を追加して、天気(気圧)が急激に変化した時のみアラートを発信できるようにしたいと話していましたが、今回実行に移しました。

 さて、12/29(木)の仕事納めの日、帰宅後、自宅のWi-Fiルータの調子が良くないことが判明。有線はつながるが、無線がつながらない状態でした。以前も同じようなトラブルがあり、冬の寒い時期に多いことから、アナログ部品の異常かなとも思いましたが、かなり長く使っているので、結局交換することにしました。
 今回交換した旧ルータはWXR-2533DHP2(Buffalo)で、ブログを読み返すと2017年6月に購入したものでした。5年半使えば十分ですね。
 交換した新ルータは遊休品としておいていたWSR-2533DHP2-CB(Buffalo)で、2019年10月に訳ありで無償交換してもらったもので、ほとんど使っていません。Wi-Fiルータ_23010312/30(金)の朝に新ルータに交換し、その後は快適に利用できています。

 ところが、12/31(土)にAmbientにデータを上げているシステムでデータが更新されていないことに気付きました。ブログを確認すると、ESP8266のプログラムの中でWi-Fiルータのssidとpasswordを記述している部分があったので、これが原因と分かりました。過去のブログはこういう時に記録として確認できるのが良いですね。記録は残るが記憶は残らないので・・。

 いつもの長〜〜い前置きはこれぐらいにして、コードを直すだけで「ハイ、おしまいよ!」で終わりそうですが、実際は簡単に復旧できませんでした。ESP8266でコードを直しても書き込めない問題があり、結局、遊休のM5StickCENV II Hatを用いて温度、湿度、気圧を測定し、AmbientとLine Notifyにデータを上げるシステムを製作しました。次回はこれらについて詳しくお話します。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: