Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【Ask_AI】メールの本文に「jun 1」のようなフォーマットの日付と「あいうえお」という文字列の行が直近3日以内で存在したらTeamsに通知するようなPowerAutomateフローを作りたい

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

【AIによる概要】

「日付」と「キーワード(あいうえお)」が同じ行にある場合のみを判定し、Teamsへ通知するフローの全手順です。
コピー&ペーストでそのまま使えるように、最初から順を追って解説します。

フローの全体図
    1. トリガー: 新しいメールが届いたとき (V3)
    2. アクション: HTML からテキスト (プレビュー)
    3. アクション: 変数を初期化する(3日分の日付配列)
    4. アクション: 作成(改行コードの定義)
    5. アクション: 選択(本文を1行ずつの配列に変換)
    6. アクション: それぞれに適用する(行ごとのループ処理)
        • 条件分岐: 同じ行に日付とキーワードがあるか
        • はい: Teamsに通知する


詳細な作成手順
ステップ 1: トリガーの設定
    1. Power Automateで「自動クラウドフロー」を新規作成します。
    2. トリガーに 「新しいメールが届いたとき (V3)」(Outlook)を選択します。
    3. フォルダ(「受信トレイ」など)を指定します。

ステップ 2: メール本文のテキスト化
HTMLタグを排除し、純粋なテキスト文字列に変換します。
    1. 「アクションの追加」 をクリックします。
    2. 「HTML からテキスト (プレビュー)」 を選択します。
    3. 「コンテンツ」の欄をクリックし、動的なコンテンツからトリガーの 「本文」 を選択します。

ステップ 3: 直近3日間の「日付パターン」を作成
一桁の日付でも6文字(例: Jun 1 のようにスペースが2つ)になる仕様に対応した配列を作ります。
    1. 「アクションの追加」 をクリックし、「変数を初期化する」 を選択します。
    2. 以下のように設定します。
        • 名前: DatePatterns
        • 種類: アレイ
        • : 右側の「式 (Expression)」タブに切り替え、以下の3つの式を1つずつ追加して配列を作成します。

【値に入れるJSONデータ】 ※これをそのまま「値」欄に貼り付けても自動認識されます。
json
[
  "@{if(equals(length(addHours(utcNow(), 9, 'd')), 1), addHours(utcNow(), 9, 'MMM  d'), addHours(utcNow(), 9, 'MMM dd'))}",
  "@{if(equals(length(addDays(addHours(utcNow(), 9), -1, 'd')), 1), addDays(addHours(utcNow(), 9), -1, 'MMM  d'), addDays(addHours(utcNow(), 9), -1, 'MMM dd'))}",
  "@{if(equals(length(addDays(addHours(utcNow(), 9), -2, 'd')), 1), addDays(addHours(utcNow(), 9), -2, 'MMM  d'), addDays(addHours(utcNow(), 9), -2, 'MMM dd'))}"
]
コードは注意してご使用ください。

(※深夜の判定ズレを防ぐため、日本時間 +9時間 の補正を組み込んでいます)
ステップ 4: 改行コードの用意
本文を行ごとに切り分けるための「目印(改行)」を作ります。
    1. 「アクションの追加」 をクリックし、「作成」 (Compose) を選択します。
    2. アクションの文字をわかりやすく NewLine に変更します。
    3. 「入力」のテキストボックスをクリックし、キーボードの「Enterキー」を1回だけ押します(空欄の2行に見える状態になります)。

ステップ 5: 本文を1行ずつのリストに変換
    1. 「アクションの追加」 をクリックし、「選択」 (Select) を選択します。
    2. 以下のように設定します。
        • 開始: 「式」タブを開き、以下を貼り付けます。
          text
          split(outputs('HTML_からテキスト_(プレビュー)_の本文'), outputs('NewLine'))
          
          コードは注意してご使用ください。

        • マップ: 左側の「キー」に Line と入力します。右側の「値」は「式」タブを開き、 item() と入力します。

ステップ 6: 1行ずつループして判定する
    1. 「アクションの追加」 をクリックし、「それぞれに適用する」 (Apply to each) を選択します。
    2. 「以前の手順から出力を選択」欄に、ステップ5の「選択」の出力である 「本文 (Body)」 を指定します。

【ループの中に条件を追加】
    1. 「それぞれに適用する」の枠内にある 「アクションの追加」 をクリックし、「条件」 を選択します。
    2. 上部のロジックを 「すべてに一致 (AND)」 に設定し、以下の2行を追加します。

    • 1行目のルール(キーワードの判定)
        • 左辺(式タブに入力): item()?['Line']
        • 演算子: 次の値を含む
        • 右辺: あいうえお

    • 2行目のルール(日付の判定)
        • 左辺: 動的なコンテンツから変数 DatePatterns を選択
        • 演算子: 次の値を含む
        • 右辺(式タブに入力): item()?['Line']

ステップ 7: Teams通知
    1. 条件分岐の 「はい(True)」 の枠内にある 「アクションの追加」 をクリックします。
    2. 「チャットまたはチャネルにメッセージを投稿する (V2)」 を選択します。
    3. 投稿先(チャネルやチャット)を指定し、「メッセージ」欄に通知したい文章を入力します。
      (例: 「同じ行に日付とキーワードを検知しました」)


💡 設定後の確認ポイント
    • 1通のメール内に、条件を満たす行が2行以上あった場合、その回数分だけTeams通知が飛びます。
    • もし「通知は1通につき1回だけにまとめたい」場合は、ループの外側に「フラグ(はい/いいえの変数)」を1つ追加する制御が必要です。

このまま作成を進めてみて、エラーが出るステップや、通知を1回にまとめる制御も追加したいか教えてください。
タイトルとURLをコピーしました