Skip to content

Outlook MailMessage

Net Bako edited this page Sep 30, 2019 · 3 revisions

Get Outlook MailMessage

Outlookに設定されているアカウントからメールを読み取るため、強制にOutlookが起動されます。 なのでOutlookが起動している前提で作らないといけません。

Outlook機能を使うためFilter機能もOutlookからサポートしている形式が使えます

Filter項目に使える例

  • “[subject] = ‘対象の件名'”
    • 件名に「RE:」があっても指定不要
  • “[ReceivedTime] >= ’14/02/2018′”
  • “[Size] >= ‘22000’”
    • 本文+添付が22000Byte(22KB)以上(本文だけでも容量計算)
  • “[ReceivedTime] >= ’05/01/2017′ AND [Size] >= ‘22000’”

参考:https://uipath.site/use/receivemail.html

Containsの利用例

Containsはデータが入っているかを判断するため一部が一致してもTrueになります。 しかし大文字と全角などは区分するので使用には注意が必要です。

strA=”009_Yamada_Taro” strA.contains(“Suzuki”).ToString *Suzukiは含むか? →False *Boolean値で返す strA.contains(“Yamada”).ToString *Yamadaは含むか? →True *Boolean値で返す

参考:https://www.effigent.jp/uipath_string/

並列処理に関しての内容

https://forum.uipath.com/t/parallel/53985/2

今回の問題

  • 並列の基本概念はお互いに関係ないプロセスを走らせる場合利用するのにOutlook MailMessageを読み取るのに並列でPopupメッセージの処理を走らせた。 → 理由はGet Outlook Mail Messageをダイレクトに実行するとたまに発生するポップアップの処理のために並列を使ってたが逆にユーザーには混乱を起こす理由になった。 → 処理順番:Get Outlook MailMessage によるOutlook起動→状況によるPopup発生、Popup時はGet Outlook MailMessageが待機状態→ポップアップ解除→待機状態のGet Outlook MailMessageが再開
  • 推奨フロー →Outlook起動(Open Application)→IfでPopup処理→Get Outlook MailMessage実行

Type IntoのActivate Checkboxのチェックを外すとどうなる?

→ 外すとActivateされているブラウザが対象になった場合には正常に動くが、他のアプリケーションがActivateされている場合には実行失敗になる。 →チェックをしておくと多数のブラウザ及びアプリケーションが起動中でもSelectorの対象がActivateされる

On Element Appear と Element Exists の使い分け

→ On Element Appearは次に必ず True状態に何かをしないといけない →Element Existsは変数に状態を入れておいていつでも使えるので使い勝手がよくいくつかのElement Existsの調合などができるので柔軟な使い方が可能。 ※もちろんElement ExistsはDo WhileとIfなどを利用してOn Element Appearと同じ動作が可能だが、On Appearは一つのActivityで作れるので簡単。 ※On Element Appearで認識できないSelectorのせいで無限待ち状態になる可能性があるため使用には注意が必要

Invoke Workflowで引数編集と引数インポートの使い分け

→18.4.5には両方のボタンがあるが2019.8.0には「引数インポート」ボタンのみ。というのは最初の作りでは引数編集のみだったのが誤りが多くて引数インポート機能を入れたがまだ引数編集ボタンをなくしてないバージョンだと思う。説明には引数編集ボタンの使い勝手がよくなくてインポート機能を追加した途中のバージョンなのでインポートを使うように誘導するのがいいと思います。

xamlファイルの開き方

→ 同じプロジェクトなのにファイルブラウザでダブルクリックすると新しいUiPathが立ち上がり、PCに負担がかかるのとBreak Pointを入れてテストがうまくできなくなるので左のProjectを開いてファイルを開くようにガイドした方がいいと思います。

invoke workflow機能を利用するとき引数がインポートされない

→ いくつかのファイルを修正する場合必ずセーブしてから次のファイルに行くようにガイドすると解決

xamlファイル同士のやり取りに必ずMain.xamlを利用する理由は?

→ 直接にやり取りしてもいいが、規模が大きくなるとInvokeファイルの中にInvokeが入ると管理が難しくなるためできるだけMainを介して管理できるようにする必要がある。このようにしても毎回使ってるFunction代わりのxamlファイルはどこでも使ったりするのでプロセス(業務)用のxamlかFunction用のxamlなのかを判断して管理することを推奨する。

Switchの注意点

Switchの条件には「""」をいれると「""」も文字として比較するため見つからない。

DataTable.Rows.Find

  • DataTableのFind機能を使うにはDataTable.Primarykeyを設定しなければなりません。
  • Findが完璧ではないため数字と文字が混在した場合結果が出ないケースがあります。(1/0などの検索)
  • Findより遅いが便利な機能はFilter DataTable Activityを推奨します。

日本の日付(yyyy/MM/dd)

  • システム上日本の日付に付く「/」が日付として認識できないケースがあるためまず文字列として読み取ってから日付として返還することを推奨する。 → replace "/" to "-" → datetime.Parse(replaced_datetime).toString("yyyy/MM/dd")

文書作成

  1. Workflowをイメージかする。
  2. Excelに吐き出した後Excelに表示されたActivityにコメントをつける → このように整理をするとActivityを検索して修正することが可能(必ずActivityが検索しやすくネーミングルールを決める)

参考

Clone this wiki locally