Docly Child

未対応の最新メールを通知

1147 views

この記事では、未対応のメールがあった際に、Slack通知する方法について紹介します

【できるようになること】

  • 条件に該当するGmailを取得
  • 該当メールがあることをSlackに通知する
※記事としてはGmail,Slackを扱いますがOutlook,Chatworkも流れとしては同じ内容で実施可能です

 ワークフローの設定例

今回は以下のケースを想定したワークフロー例を作成します

件名に、「AUTOROについて」が含まれているメールで、未対応のものが直近1週間以内にあればSlackに通知する。

※このワークフローは、メールの受信をトリガーにして自動実行されるものではありませんがスケジュール実行で10分おきに設定すると比較的近い形式で実行することができます

※コネクション登録済みの方はスキップしてください

ワークフロー設定の前に、利用するコネクションを登録する必要があります。
詳細な方法は以下をご参照ください。

今回行う最終確認分のメール取得にはパッケージストアにある「便利アクション」を利用します
※パッケージは初回利用時弊社側で設定が必要となりますので、右下のチャットより利用を希望する旨ご連絡いただけますと幸いです

まずは、ワークフローを格納するプロジェクトでパッケージを開き、「便利アクション」をクリックします

 

その後インストールボタンを押すと格納されているカスタムアクションが利用可能になります

今回はインストールしたカスタムアクションの中から「指定のIDより前にあるデータを取得」を利用します

利用方法はワークフロー作成後、「カスタムアクションを実行」をドラッグアンドドロップし、「指定のIDより前にあるデータを取得」を選択します

 

直近1週間以内のメールを取得するには、変数に保存で1週間前の時間を取得し、「Gmailを取得」アクションに設定します

1週間前の時間を取得する際はGettimeアクションなどで日付を指定する形式でも可能ですが、厳密に実行より1週間前の時間を指定する場合はUnix時間という形式を使います(1週間前を1時間前、1日前などに変更したい場合はこちらを参考にsubtract(1,”weeks”)の箇所を修正ください)


Gmailの検索方法は下記を、Outlookは
こちらを参照ください

https://support.google.com/mail/answer/7190?hl=ja

 

データストアのページを開き、データを追加をクリック、変数名と値を設定します

「データを取得する」アクションを入れ、登録した変数を設定し、カスタムアクションに紐付けます

カスタムアクション設定後、「各要素について繰り返す」を追加し、繰り返すリストにカスタムアクションのアウトプットを連携し、要素を格納する変数名にmail_dataと入力します

 

その後、「各要素について繰り返す」の中にSlackでメッセージを送信」「データを保存する」を追加し、チャンネル名の指定やメッセージを記載します

このように設定することで、該当のメールがある場合は全て通知を行い、「データを保存する」で通知したメールのIDをデータに保存し、変数の内容を最後のメールIDに更新し続けることで、以後通知を行わないようにします

 

# 変数に保存_7日前の日時取得
+store_value_1:
  action>: StoreValue
  key: search_date
  value: ${moment().subtract(1, 'weeks').unix()}
  private: false

# Gmailを取得_直近一週間、指定の件名のメールを取得
+gmail_get_1:
  action>: GmailGet
  query: 'after:${search_date} subject:指定の件名'
  provider: ''
  limit: 3
  private: false
  meta:
    display:

# データを取得する
+data_store_get_1:
  action>: DataStoreGet
  key: last_mail
  private: false

# 指定のIDより前にあるデータを取得
+call_custom_action_1:
  action>: CallCustomAction
  id: ca_37191e4a9dc28b59b752
  params:
    jsonArray: +gmail_get_1
    lastId: +data_store_get_1
  meta:
    version: '2021-08-04T03:12:19.000Z'
    interface:
      params:
        jsonArray: Text
        lastId: Text
      output: Anything
      pickers:
    display:
      id:
        type: chip
        label: '指定のIDより前にあるデータを取得'
        icon: build
        imageUrl: null
        color: '#AD1457'

# 各要素について繰り返す
+for_each_1:
  for_each>:
    mail_data: +call_custom_action_1
  _do:

    # Slackでメッセージを送信
    +send_slack_message_1:
      action>: SendSlackMessage
      provider: ''
      channel: ''
      text: 'ここにメッセージ'
      send_select: false
      response_message: false
      private: false
      meta:
        display:

    # データを保存する
    +data_store_save_1:
      action>: DataStoreSave
      key: last_mail
      value: ${mail_data.id}
      private: false
<Googleworkspace>GoogleWorkspace/グーグルワークスペース <ChatWork>チャットワーク <Slack>スラック Outlook アウトルック      

このページは役に立ちましたか?