今回はGmailGetコンポーネントとGmailSQLCallコンポーネントを利用してメール取得、メールラベル移動についてご紹介します。
事前準備とIMAPデータモデル_Gmailコネクション作成
②【ASTERIA WarpとGmail連携】←今回紹介
GmailGetコンポーネント、GmailSQLCallコンポーネントでメール取得、メール移動
*********************************
・フロー全体の流れ
GmailGetで受信トレイ【INBOX】からメールを取得し、件名(Subject)により対象のラベルへ移動する

・フロー詳細説明
・GmailGetコンポーネントでIMAP.INBOXからメール一覧をループで取得
件名は特定できないためCONTAINSを使用して対象文字が含んでいるメールを取得
例:SELECT Id, Subject FROM IMAP.INBOX WHERE CONTAINS(Subject, 'プログラミング') OR CONTAINS(Subject, '祭') ORDER BY Date DESC;

・1つ目のMapperではラベル定義とストリームデータをマッピング(GmailGetコンポーネント直下のMapper)
下図のように条件付きレイヤと条件なしレイヤを設定
このMapperではSubject(件名)にIT課に関する文字が含んでいるかを確認しています。
SubjectにIT課に関する文字が含む場合、DestinationにIT課を定義
IT課に関する文字が含まない場合は、Destinationに値を定義していない
条件付きレイヤ定義内容:
( $record.Subject ~= "プログラミング" ) || ( $record.Subject ~= "IT" ) || ( $record.Subject ~= "エンジニアリング" ) || ( $record.Subject ~= "情報" )

・1つ目のBranchStartコンポーネントでDestination(ラベル)の値が条件に一致するかを確認
BranchStartの条件式プロパティで「$record.Destination!="IT課"」を設定
例:直前のMapperでDestination=IT課になった場合は、条件式の判定結果はfalseになるため、下方向へ進みます。

・Mapper2コンポーネントではラベルを移動するためにGmailSQLCallコンポーネントのSQLパラメータに値を設定(1つ目BranchStartの下方向のMapper)

・GmailSQLCallコンポーネントでGmailIMAPデータモデルのMoveEmailsストアドプロシージャでメールを移動
GmailSQLCallのSQL文に「{call MoveEmails(?Mailbox?,?Id?,?Destination?)}」を設定
例:{call MoveEmails(?デフォルト値?,?10?,?IT課?)}
Mailbox、Destinationのデフォルト値はInboxになります。

・Mapperコンポーネント(ビジネス課に関するMapperへ参考)
条件付きレイヤと条件なしレイヤを設定
このMapperではSubject(件名)にビジネス課に関する文字が含んでいるかを確認しています。
Subjectにビジネス課に関する文字が含む場合、Destinationにビジネス課を定義
ビジネス課に関する文字が含まない場合は、Destinationに値を定義していない
条件付きレイヤの定義内容:
( $record.Subject ~= "ビジネス" ) || ( $record.Subject ~= "経理" ) || ( $record.Subject ~= "文系" )

・上記Mapperの直下にあるBranchStartコンポーネントでDestination(ラベル)の値が条件に一致するかを確認
BranchStartの条件式プロパティで「$record.Destination!="ビジネス課"」を設定
例:直前のMapperでDestination=ビジネス課になった場合は、条件式の判定結果はfalseになるため、下方向へ進みます。
・BranchStartコンポーネントの直下Mapperコンポーネントでラベルを移動するためにGmailSQLCallコンポーネントのSQLパラメータに値を設定
・GmailSQLCallコンポーネントでGmailIMAPデータモデルのMoveEmailsストアドプロシージャでメールを移動する
GmailSQLCallのSQL文に「{call MoveEmails(?Mailbox?,?Id?,?Destination?)}」を設定
例:{call MoveEmails(?Mailbox?,?9?,?ビジネス課?)}
・建築課、総務へメール移動についても上記の内容と同じくGmailGetで取得したSubject(件名)を取得し、Mapperの条件付きレイヤで建築課対象の文字、総務対象の文字が含んでいるかを確認し、Destinationにそれぞれ対象の移動先(値)を定義し、BranchStartでDestinationにどんな値が入っているかを確認して、移動先を分岐する
上記の内容により、IT課、ビジネス課、建築課、総務へメールが移動できるようになります。
・Gmailでメール移動を確認する
新着メール8件あり、移動前のIT課、ビジネス課、建築課、総務に入っているメール件数は下図通りなる

フロー実行後の移動

