チュートリアル: Azure Logic Apps、Azure Functions、Azure Storage を使ってメールを処理するワークフローを作成する

適用対象: Azure Logic Apps (従量課金)

Azure Logic Apps を使うと、Azure サービスや Microsoft サービスを初めとする各種の SaaS (サービスとしてのソフトウェア) アプリとオンプレミス システムの垣根を越えてワークフローを自動化したりデータを統合したりすることができます。 このチュートリアルでは、受信メールと添付ファイルを処理し、Azure Functions を使ってメール コンテンツを分析し、そのコンテンツを Azure Storage に保存し、コンテンツを確認するためのメールを送信するロジック アプリ ワークフローを構築する方法について説明します。

このチュートリアルでは、以下の内容を学習します。

  • Azure Storage と Storage Explorer を設定します (保存済みメールと添付ファイルのチェックに使用)。
  • メールから HTML を削除する Azure 関数を作成します。 その関数に必要なコードは、このチュートリアルに含まれています。
  • 従量課金の空のロジック アプリ ワークフローを作成します。
  • メールの添付ファイルを監視するトリガーを追加します。
  • メールにファイルが添付されているかどうかをチェックする条件を追加します。
  • メールにファイルが添付されていたときに Azure 関数を呼び出すアクションを追加します。
  • メールと添付ファイルのストレージ BLOB を作成するアクションを追加します。
  • メール通知を送信するアクションを追加します。

次のスクリーンショットは、大まかなワークフローを示しています。

このチュートリアルの大まかな従量課金ワークフローの例を示すスクリーンショット。

前提条件

  • Azure アカウントとサブスクリプション。 サブスクリプションをお持ちでない場合には、無料の Azure アカウントにサインアップしてください。

  • Azure Logic Apps がサポートするメール プロバイダー (Office 365 Outlook、Outlook.com、Gmail など) のメール アカウント。 その他のプロバイダーについては、こちらのコネクタ一覧を参照してください。

    このロジック アプリ ワークフローでは、職場または学校アカウントを使用します。 別のメール アカウントを使う場合、おおよその手順は変わりませんが、UI の表示がやや異なることがあります。

    Note

    Gmail コネクタの使用を希望する場合、ロジック アプリ ワークフローで制限なしにこのコネクタを使用できるのは、G-Suite ビジネス アカウントだけです。 Gmail コンシューマー アカウントを持っている場合は、Google によって承認された特定のサービスのみでこのコネクタを使用できるほか、認証に使用する Google クライアント アプリを Gmail コネクタで作成することができます。 詳細については、「Azure Logic Apps での Google コネクタのデータ セキュリティとプライバシー ポリシー」を参照してください。

  • 無料の Microsoft Azure Storage Explorer のダウンロードとインストール。 ストレージ コンテナーが正しく設定されているかどうかをこのツールでチェックすることができます。

  • ワークフローが特定の IP アドレスへのトラフィックを制限するファイアウォール経由で通信する必要がある場合、そのファイアウォールでは、ロジック アプリ リソースが存在する Azure リージョン内の Azure Logic Apps によって使用される受信送信 "両方" の IP アドレスに対してアクセスを許可する必要があります。 また、ワークフローで Office 365 Outlook コネクタや SQL コネクタなどのマネージド コネクタが使用されている場合、またはカスタム コネクタが使用されている場合、そのファイアウォールでは、ロジック アプリの Azure リージョン内にある "すべて" のマネージド コネクタ送信 IP アドレスに対するアクセスも許可する必要があります。

添付ファイルの保存先ストレージを設定する

受信したメールと添付ファイルは、Azure Storage コンテナーに BLOB として保存することができます。

  1. Azure アカウントの資格情報を使用した Azure portal で、ストレージ アカウントがまだない場合は、[基本] タブの次の情報を使用してストレージ アカウントを作成します。

    プロパティ 説明
    サブスクリプション <Azure サブスクリプション名> Azure サブスクリプションの名前
    リソース グループ <Azure-resource-group> Azure リソース グループの名前。関連するリソースをまとめて管理する目的で使われます。 この例では、LA-Tutorial-RG を使用します。

    注: リソース グループは、特定のリージョン内に存在します。 このチュートリアルで使う項目が、一部のリージョンでは利用できない場合もありますが、可能な限り同じリージョンを使うようにしてください。
    Storage account name (ストレージ アカウント名) <Azure-storage-account-name> お使いのストレージ アカウント名。3 から 24 文字で構成する必要があり、小文字と数字のみを含めることができます。 この例では、attachmentstorageacct を使用します。
    リージョン <Azure-region> ストレージ アカウントに関する情報の保存先となるリージョン。 この例では米国西部を使用します。
    パフォーマンス Standard サポートされるデータの種類とデータの保存メディアは、この設定で指定します。 「ストレージ アカウントの種類」を参照してください。
    冗長性 geo 冗長ストレージ (GRS) この設定により、計画イベントと計画外イベントからの保護として、データの複数のコピーを格納できます。 詳細については、「Azure Storage の冗長性」を参照してください。

    ストレージ アカウントは、Azure PowerShell または Azure CLI を使用して作成することもできます。

  2. 完了したら、[確認]>[作成] を選択します。

  3. ストレージ アカウントが Azure によってデプロイされたら、そのストレージ アカウントを検索し、ストレージ アカウントのアクセス キーを確認します。

    1. ストレージ アカウント メニューの [セキュリティとネットワーク] で、[アクセス キー] を選択します。

    2. ストレージ アカウント名と key1 をコピーし、これらの値を安全な場所に保存します。

    ストレージ アカウントのアクセス キーは、Azure PowerShell または Azure CLI を使用して取得することもできます。

  4. メールの添付ファイル用の Blob Storage コンテナーを作成します。

    1. ストレージ アカウント メニューの [データ ストレージ][コンテナー] を選択します。

    2. [コンテナー] ページのツール バーで、[コンテナー] を選択します。

    3. [新しいコンテナー] で、コンテナー名として「添付ファイル」と入力します。 [パブリック アクセス レベル][コンテナー (コンテナーと BLOB の匿名読み取りアクセス)]>[OK] の順に選択します。

    完了すると、コンテナーの一覧に新しいストレージ コンテナーが表示されます。

    ストレージ コンテナーは、Azure PowerShell または Azure CLI を使用して作成することもできます。

次に、このストレージ アカウントに Storage Explorer を接続します。

Storage Explorer を設定する

次に、ワークフローによって添付ファイルが BLOB としてストレージ コンテナーに正しく保存されるかどうかを確認できるように、ストレージ アカウントに Storage Explorer を接続します。

  1. Microsoft Azure Storage Explorer を起動します。 Azure のアカウントを使用してサインインします。

    Note

    メッセージが表示されなかった場合は、Storage Explorer アクティビティ バーの [アカウント管理] (アカウント アイコン) を選択します。

  2. [Azure 環境の選択] ウィンドウで、Azure 環境を選択し、[次へ] を選択します。

    この例では、引き続きグローバルなマルチテナント Azure を選択します。

  3. 表示されたブラウザー ウィンドウで、Azure アカウントを使用してサインインします。

  4. Storage Explorer と [アカウント管理] ウィンドウに戻り、正しい Microsoft Entra テナントとサブスクリプションが選択されていることを確認します。

  5. Storage Explorer アクティビティ バーで、[接続ダイアログを開く] を選択します。

  6. [リソースの選択] ウィンドウで、[ストレージ アカウントまたはサービス] を選択します。

  7. [接続方法の選択] ウィンドウで、[アカウント名とキー]>[次へ] を選択します。

  8. [Azure Storage への接続] ウィンドウで、次の情報を指定し、[次へ] を選択します。

    プロパティ 先頭値
    表示名 接続のフレンドリ名
    アカウント名 ストレージ アカウント名の取得
    アカウント キー 以前に保存したアクセス キー
  9. [概要] ウィンドウで接続情報を確認し、[接続] を選択します。

    Storage Explorer によって接続が作成され、Explorer ウィンドウの [エミュレーターとアタッチ状態]>[ストレージ アカウント] にストレージ アカウントが表示されます。

  10. 作成した BLOB ストレージ コンテナーを確認するには、 [ストレージ アカウント] でストレージ アカウント (attachmentstorageacct) を展開し、 [BLOB コンテナー] を展開して、attachments コンテナーを見つけます。次に例を示します。

次に、受信メールから HTML を削除する Azure 関数を作成します。

HTML を削除する関数を作成する

今度は、この手順で紹介するコード スニペットを使って、個々の受信メールから HTML を削除する Azure 関数を作成します。 こうすることでメールから余分な要素が取り除かれ、コンテンツが処理しゃすくなります。 続いてこの関数をワークフローから呼び出すことができます。

  1. 関数を作成する前に、次の手順に従って関数アプリを作成します。

    1. [基本] タブで次の情報を指定します。

      プロパティ 説明
      サブスクリプション <Azure サブスクリプションの名前> 先ほど使用したものと同じ Azure サブスクリプション
      リソース グループ LA-Tutorial-RG 先ほど使用したものと同じ Azure リソース グループ
      関数アプリ名 <関数アプリの名前> 関数アプリの名前。Azure 全体で一意である必要があります。 この例では既に CleanTextFunctionApp が使用されているため、別の名前 (たとえば MyCleanTextFunctionApp-<your-name>) を付けます
      コードまたはコンテナー イメージをデプロイしますか? コード コード ファイルを発行します。
      ランタイム スタック <優先する言語> お気に入りの関数プログラミング言語をサポートするランタイムを選択します。 ポータル内編集は、JavaScript、PowerShell、TypeScript、および C# スクリプトでのみ利用できます。 C# クラス ライブラリ、Java、Python の関数はローカルで開発する必要があります。 C# および F# 関数の場合は [.NET] を選択します。
      Version <バージョン番号> インストールされているランタイムのバージョンを選択します。
      リージョン <Azure-region> 先ほど使用したものと同じリージョン。 この例では米国西部を使用します。
      オペレーティング システム <オペレーティング システム> オペレーティング システムは、ランタイム スタックの選択に基づいてあらかじめ選択されていますが、お気に入りの関数プログラミング言語に対応したオペレーティング システムを選択できます。 ポータルでの編集は Windows でのみサポートされます。 この例では Windows が選択されています。
      ホスティング オプションとプラン 従量課金プラン (サーバーレス) 関数アプリにどのようにリソースが割り当てられるかを定義するホスティング プランを選択します。 既定の [従量課金プラン] では、リソースは関数の必要に応じて動的に追加されます。 このサーバーレスのホスティングでは、関数が実行された時間にのみ課金されます。 App Service プランで実行する場合は、関数アプリのスケーリングを管理する必要があります。
    2. [Next:Storage](次へ: ストレージ) を選択します。 [ストレージ] タブで次の情報を指定します。

      プロパティ 説明
      ストレージ アカウント cleantextfunctionstorageacct Function App で使用されるストレージ アカウントを作成します。 ストレージ アカウント名の長さは 3 から 24 文字にする必要があり、使用できるのは小文字と数字のみです。

      注: このストレージ アカウントは関数アプリを格納するものであり、先ほどメールの添付ファイルを保存する目的で作成したストレージ アカウントとは異なります。 既存のアカウントを使用することもできますが、ストレージ アカウントの要件を満たしている必要があります。
    3. 完了したら、 [確認および作成] を選択します。 情報を確認し、[作成] を選択します。

    4. Azure で関数アプリ リソースが作成およびデプロイされたら、[リソースに移動] を選択します。

  2. 次は、関数をローカルで作成します (Azure portal での関数の作成は制限されているため)。 HTTP トリガー テンプレートを使用し、関数に次の情報を指定して、含まれているサンプル コードを使用してください。これにより、HTML が削除され、結果が呼び出し元に返されます。

    プロパティ
    関数名 RemoveHTMLFunction を選択します。
    承認レベル Function
    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    using System.Text.RegularExpressions;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log) 
    {
       log.LogInformation("HttpWebhook triggered");
    
       // Parse query parameter
       string emailBodyContent = await new StreamReader(req.Body).ReadToEndAsync();
    
       // Replace HTML with other characters
       string updatedBody = Regex.Replace(emailBodyContent, "<.*?>", string.Empty);
       updatedBody = updatedBody.Replace("\\r\\n", " ");
       updatedBody = updatedBody.Replace(@"&nbsp;", " ");
    
       // Return cleaned text
       return (ActionResult)new OkObjectResult(new { updatedBody });
    }
    
  3. 関数をテストするには、次のサンプル入力を使用できます。

    {"name": "<p><p>Testing my function</br></p></p>"}

    関数の出力は、次の結果のようになります。

    {"updatedBody":"{\"name\": \"Testing my function\"}"}
    

関数が正しく機能していることを確認したら、ロジック アプリ のリソースとワークフローを作成します。 このチュートリアルでは、メールから HTML を削除する関数の作成方法を紹介していますが、Azure Logic Apps には HTML をテキストに変換するコネクタも用意されています。

ロジック アプリ ワークフローを作成する

  1. Azure portal 上部の検索ボックスに「ロジック アプリ」と入力し、[ロジック アプリ] を選択します。

  2. [ロジック アプリ] ページで [追加] を選択します。

  3. [ロジック アプリの作成] ページの [プラン] で、プランの種類として [従量課金] を選択すると、従量課金ロジック アプリ ワークフローのオプションのみが表示されます。 以下の情報を入力した後、[確認 + 作成] を選択します。

    プロパティ 説明
    サブスクリプション <Azure サブスクリプションの名前> 先ほど使用したものと同じ Azure サブスクリプション
    リソース グループ LA-Tutorial-RG 先ほど使用したものと同じ Azure リソース グループ
    ロジック アプリ名 LA-ProcessAttachment ロジック アプリとワークフローの名前。 従量課金ロジック アプリとワークフローの名前は常に同じです。
    [リージョン] 米国西部 先ほど使用したものと同じリージョン
    Log Analytics を有効にする いいえ このチュートリアルでは [オフ] のままにしてください。
  4. 入力した情報を確認し、[作成] を選択します。 Azure によってアプリがデプロイされたら、 [リソースに移動] を選択します。

  5. ロジック アプリのリソース メニューで、[ロジック アプリ デザイナー] を選択してワークフロー デザイナーを開きます。

受信メールを確認するトリガーを追加する

次は、添付ファイル付きの受信メールをチェックするトリガーを追加します。 すべてのワークフローはトリガーから起動する必要があり、トリガーは、特定のイベントが発生したり、新しいデータが存在したりするなど、トリガー条件が満たされたときに起動されます。 詳細については、マルチテナント Azure Logic Apps で従量課金ロジック アプリ ワークフローの例を作成するクイックスタートのページを参照してください。

この例では、Office 365 Outlook コネクタを使用します。この場合、Microsoft の職場または学校アカウントでサインインする必要があります。 個人用の Microsoft アカウントを使用している場合は、Outlook.com コネクタを使用します。

  1. ワークフロー デザイナーで、[トリガーの追加] を選択します。

  2. [トリガーの追加] ペインが開いたら、検索ボックスに「office 365 outlook」と入力します。 トリガーの結果リストの [Office 365 Outlook] で、[新しいメールが届いたとき (V3)] を選択します。

  3. 資格情報を求められた場合は、お使いのメール アカウントにサインインします。これにより、ワークフローとメール アカウントの間に接続が作成されます。

  4. 次に新しいメールを確認し、ワークフローを実行するためのトリガー条件を指定します。

    プロパティ 説明
    重要度 [任意] メールの必要な重要度レベルを指定します。
    添付ファイル付きのみ はい ファイルが添付されているメールのみ取得します。

    注: このトリガーは、お使いのアカウントからメールを削除することはありません。新着メッセージだけをチェックし、件名フィルターに一致するメールだけを処理します。
    添付ファイルを含める はい 添付ファイルの有無をチェックするだけでなく、ワークフローの入力として添付ファイルを取得します。
    フォルダー Inbox チェックするメール フォルダー
  5. [詳細パラメーター] 一覧から [件名フィルター] を選択します。

  6. このアクションで [件名フィルター] ボックスが表示されたら、次に示す件名を指定します。

    プロパティ 説明
    件名フィルター ビジネス アナリスト 2 #423501 メールの件名から探すテキスト
  7. ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

    この時点でロジック アプリ ワークフローは稼働していますが、メールをチェックすること以外は何もしていません。 次の手順で、ワークフローで後続のアクションを続行するための基準を指定する条件を追加します。

添付ファイルをチェックする

添付ファイルが含まれているメールだけを選択する条件を追加します。

  1. トリガーでプラス記号 (+) を選択し、[アクションの追加] を選択します。

  2. [アクションの追加] ペインの検索ボックスに「condition」と入力します。

  3. アクションの結果リストから、[条件] という名前のアクションを選択します。

  4. 条件の名前をわかりやすい名前に変更します。

    1. [条件] 情報ペインで、条件の既定の名前を、次のようにわかりやすい名前に置き換えます。メールに添付ファイルとキーの件名フレーズがある場合
  5. 添付ファイルが含まれているメールをチェックする条件を作成します。

    1. And 操作の一覧下の最初の行で、左端のボックス内部を選択します。 表示される動的コンテンツ リストから、 [Has Attachment] プロパティを選択します。

      条件アクション、左端のボックスにカーソルが表示された 2 行目、開いている動的コンテンツ リスト、および [添付ファイル] プロパティが選択されているスクリーンショット。

    2. 中央のボックスでは、演算子を [is equal to] のままにしておきます。

    3. 右側のボックスに、トリガーから出力される [添付ファイルあり] プロパティ値と比較する値として、「true」と入力します。 2 つの値が等しい場合、メールには少なくとも 1 つの添付ファイルが存在します。この場合、条件が成立してワークフローが続行されることになります。

      完全な条件を示すスクリーンショット。

    デザイナーで [コード ビュー] を選択して表示できる基になるワークフロー定義で、条件は次の例のようになります。

    "Condition": {
       "actions": { <actions-to-run-when-condition-passes> },
       "expression": {
          "and": [ {
             "equals": [
                "@triggerBody()?['HasAttachment']",
                  "true"
             ]
          } ]
       },
       "runAfter": {},
       "type": "If"
    }
    
  6. ワークフローを保存します。

条件をテストする

  1. デザイナーのツール バーで、[トリガーの実行]>[実行] を選択します。

    この手順では、ワークフローを手動で開始して実行しますが、テスト メールが受信トレイに届くまでは何も起こりません。

  2. 次の基準を満たすメールをご自身で送信してください。

    • トリガーの [件名フィルター] に指定したテキスト (Business Analyst 2 #423501) をメールの件名に含めます。

    • メールに添付ファイルを 1 つ追加します。 ここでは、空のテキスト ファイルを作成してメールに添付するだけでかまいません。

    メールが着信すると、添付ファイルと指定された件名テキストの存在がワークフローによってチェックされます。 条件に適合すると、トリガーが起動し、Azure Logic Apps によってワークフロー インスタンスがインスタンス化され実行されます。

  3. トリガーが起動してワークフローが正常に実行されたことを確認するには、ロジック アプリのメニューから [概要] を選択します。

    • 正常に起動されたトリガーを表示するには、[トリガーの履歴] を選択します。

    • 正常に実行されたワークフローを表示するには、[実行の履歴] を選択します。

    トリガーが起動しなかった場合、またはトリガーが成功してもワークフローが実行されなかった場合は、ロジック アプリ ワークフローのトラブルシューティングに関するページを参照してください。

次に、[True] 分岐で実行するアクションを定義します。 添付ファイルと一緒にメールを保存するために、メール本文から HTML をすべて削除したうえで、メールと添付ファイル用の BLOB をストレージ コンテナーに作成します。

注意

メールに添付ファイルがない場合、ワークフローは [False] 分岐を空のままにして、アクションを実行しないことがあります。 [False] の分岐には、このチュートリアルの後、補足的な演習として適宜アクションを追加してみてください。

RemoveHTMLFunction を呼び出す

この手順では、以前に作成した Azure 関数をワークフローに追加し、メールの本文の内容をメール トリガーから関数に渡します。

  1. ロジック アプリのメニューで [ロジック アプリ デザイナー] を選択します。 [True] 分岐で、[アクションの追加] を選択します。

  2. [操作を選択してください] の検索ボックスで、[組み込み] を選びます。 検索ボックスに「Azure 関数」と入力し、[Azure 関数を選択する] という名前のアクションを選択します。

    [Azure 関数を選択する] という名前の選択されたアクションを示すスクリーンショット。

  3. あらかじめ作成しておいた関数アプリ (この例では CleanTextFunctionApp) を選択します。

  4. 次に、この例の RemoveHTMLFunction という名前の関数を選択します。

  5. 関数シェイプの名前を、次のようにわかりやすく変更します: RemoveHTMLFunction を呼び出してメール本文を消去する

  6. 関数で処理する入力を指定します。

    1. [要求本文] に次のテキストを入力し、末尾にスペースを追加します。

      { "emailBody":

      以降の手順でこの入力を操作しますが、入力が JSON 形式で正しく設定されるまで、無効な JSON に関するエラーが表示されます。 最初にこの関数をテストしたとき、関数に渡す入力として JavaScript Object Notation (JSON) 形式を用いました。 したがって、要求本文にも同じ形式を使用する必要があります。

      また、カーソルが [要求本文] ボックス内にあるときには、動的コンテンツ リストが表示されるので、以前のアクションから使用可能なプロパティ値を選択できます。

    2. 動的コンテンツ リストで、 [新しい電子メールが届いたとき][Body] プロパティを選択します。 このプロパティの後に、右中かっこ (}) を必ず追加してください。

      関数に渡す要求本文を指定

    作業が完了すると、関数への入力は次の例のようになります。

    関数に渡す完成した要求本文

  7. ワークフローを保存します。

次に、メールの本文を保存できるように、ストレージ コンテナーに BLOB を作成するアクションを追加します。

メールの本文に使う BLOB を作成する

  1. デザイナーの [True] ブロックの Azure 関数で、[アクションの追加] を選択します。

  2. [操作を選択してください] の検索ボックスで、 [すべて] を選択します。 検索ボックスに「BLOB の作成」と入力し、[BLOB の作成] という名前のアクションを選択します。

    [BLOB の作成] という名前の Azure Blob Storage アクションが選択されていることを示すスクリーンショット。

  3. ストレージ アカウントの接続情報を指定し、[作成] を選択します。次に例を示します。

    プロパティ 説明
    接続名 AttachmentStorageConnection 接続の名前。わかりやすい名前を付けます。
    認証の種類 アクセス キー 接続に使用する認証の種類
    Azure Storage アカウント名またはエンドポイント <storage-account-name> 以前に作成したストレージ アカウントの名前 (この例では attachmentstorageacct)
    Azure ストレージ アカウントのアクセス キー <ストレージ アカウント アクセス キー> 以前に作成したストレージ アカウントのアクセス キー
  4. [BLOB の作成] アクションを、次のようにわかりやすく変更します: メールの本文に使う BLOB を作成する

  5. [BLOB の作成] アクションで、次の情報を指定します。

    プロパティ 説明
    ストレージ アカウント名または BLOB エンドポイント 接続設定を使用する (<ストレージ アカウント名>) ストレージ アカウント (この例では attachmentstorageacct) を選択します。
    フォルダー パス <パスおよびコンテナー名> あらかじめ作成しておいたコンテナーのパスと名前。 この例では、フォルダー アイコンを選択し、[添付ファイル] コンテナーを選択します。
    BLOB 名 <送信者名> この例では、BLOB の名前として送信者の名前を使用します。 このボックス内を選択して、動的コンテンツ リストを表示します。 [新しいメールが届いたとき] セクションで、[差出人] フィールドを選択します。
    BLOB コンテンツ <BLOB のコンテンツ> この例では、HTML が削除されたメールの本文を BLOB コンテンツとして使用します。 このボックス内を選択して、動的コンテンツ リストを表示します。 [RemoveHTMLFunction を呼び出してメール本文を消去する] セクションで、[本文] を選択します。

    次の図には、[BLOB の作成] アクションに対して選択するフィールドが示されています。

    [BLOB の作成] アクションの HTML を除去したメールの本文に関する情報を示すスクリーンショット。

    完了したアクションは、以下の例のようになります。

    完了した [BLOB の作成] アクションの HTML を除去したメール入力例を示すスクリーンショット。

  6. ワークフローを保存します。

添付ファイルの処理を確認する

  1. デザイナーのツール バーで、[トリガーの実行]>[実行] を選択します。

    この手順では、ワークフローを手動で開始して実行しますが、テスト メールが受信トレイに届くまでは何も起こりません。

  2. 次の基準を満たすメールをご自身で送信してください。

    • トリガーの [件名フィルター] に指定したテキスト (Business Analyst 2 #423501) をメールの件名に含めます。

    • メールに添付ファイルを少なくとも 1 つ追加します。 ここでは、空のテキスト ファイルを作成してメールに添付するだけでかまいません。

    • 何らかのテスト コンテンツをメールの本文に含めます (例: Testing my logic app workflow)。

    ワークフローのトリガーが起動しなかった場合や、トリガーが正常に起動したにもかかわらずワークフローが実行されなかった場合は、ロジック アプリ ワークフローのトラブルシューティングに関するページを参照してください。

  3. ワークフローによって適切なストレージ コンテナーにメールが保存されたことを確認します。

    1. Storage Explorer で [エミュレーターとアタッチ状態]>[ストレージ アカウント]>[attachmentstorageacct (キー)]>[BLOB コンテナー]>[添付ファイル] の順に展開します。

    2. メールの attachments コンテナーを確認します。

      現時点では、コンテナー内のメールが表示されるだけです。これは添付ファイルがまだワークフローで処理されていないためです。

      保存されたメールのみを含む Storage Explorer を示すスクリーンショット。

    3. ここまで終えたら Storage Explorer からメールを削除します。

  4. [False] 分岐については、現時点では何も実行されません。必要に応じて、基準を満たさないメールを送信して、この分岐をテストしてください。

次に、メールの添付ファイルをすべて処理するための [For each] ループを追加します。

添付ファイルを処理する

メールの各添付ファイルを処理するには、ワークフローに [For each] ループを追加します。

  1. デザイナーに戻ります。 [メールの本文に使う BLOB を作成する] アクションの下の [アクションの追加] を選択します。

  2. [操作を選択してください] の検索ボックスで、[組み込み] を選びます。 検索ボックスに「for each」と入力し、[For each] という名前のアクションを選択します。

    [For each] という名前の選択したアクションを示すスクリーンショット。

  3. ループの名前を、次のようにわかりやすく変更します: メールの添付ファイルごと

  4. ここで、ループで処理するデータを選択します。 [メールの添付ファイルごと] ループ内で、[以前の手順から出力を選択] ボックス内を選択して動的なコンテンツの一覧を表示します。 [新しいメールが届いたとき] セクションで、[添付ファイル] を選択します。

    [添付ファイル] という名前のフィールドが選択された動的コンテンツ リストを示すスクリーンショット。

    メールに含まれているすべての添付ファイルの配列が、 [添付ファイル] フィールドから渡されます。 その配列で渡された各要素に対するアクションが、For each ループで反復実行されます。

  5. ワークフローを保存します。

次に、個々の添付ファイルを BLOB として attachments ストレージ コンテナーに保存するアクションを追加します。

各添付ファイル用の BLOB を作成する

  1. デザイナーで、[メールの添付ファイルごと] ループの [アクションの追加] を選択して、検出された各添付ファイルに対して実行するタスクを指定します。

    [アクションの追加] が選択されたループを示すスクリーンショット。

  2. [操作を選択してください] の検索ボックスで、 [すべて] を選択します。 検索ボックスに「BLOB の作成」と入力し、[BLOB の作成] という名前のアクションを選択します。

    [BLOB の作成] という名前の選択したアクションを示すスクリーンショット。

  3. [BLOB の作成 2] アクションを、次のようにわかりやすく変更します: メールの添付ファイルごとに BLOB を作成する

  4. [メールの添付ファイルごとに BLOB を作成する] アクションで、次の情報を指定します。

    プロパティ 説明
    ストレージ アカウント名または BLOB エンドポイント 接続設定を使用する (<ストレージ アカウント名>) ストレージ アカウント (この例では attachmentstorageacct) を選択します。
    フォルダー パス <パスおよびコンテナー名> あらかじめ作成しておいたコンテナーのパスと名前。 この例では、フォルダー アイコンを選択し、[添付ファイル] コンテナーを選択します。
    BLOB 名 <添付ファイル名> この例では、BLOB の名前として添付ファイルの名前を使用します。 このボックス内を選択して、動的コンテンツ リストを表示します。 [新しいメールが届いたとき] セクションで、[名前] フィールドを選択します。
    BLOB コンテンツ <email-content> この例では、メール コンテンツを BLOB コンテンツとして使用します。 このボックス内を選択して、動的コンテンツ リストを表示します。 [新しいメールが届いたとき] セクションで、[コンテンツ] を選択します。

    [BLOB の作成] アクションの添付ファイルに関する情報を示すスクリーンショット。

    完了したアクションは、以下の例のようになります。

    完了した [BLOB の作成] アクションの添付ファイル情報の例を示すスクリーンショット。

  5. ワークフローを保存します。

添付ファイルの処理を確認する

  1. デザイナーのツール バーで、[トリガーの実行]>[実行] を選択します。

    この手順では、ワークフローを手動で開始して実行しますが、テスト メールが受信トレイに届くまでは何も起こりません。

  2. 次の基準を満たすメールをご自身で送信してください。

    • トリガーの [件名フィルター] プロパティに指定したテキスト (Business Analyst 2 #423501) をメールの件名に含めます。

    • メールには、添付ファイルを少なくとも 2 つ含めます。 ここでは、空のテキスト ファイルを 2 つ作成してメールに添付するだけでかまいません。

    ワークフローのトリガーが起動しなかった場合や、トリガーが正常に起動したにもかかわらずワークフローが実行されなかった場合は、ロジック アプリ ワークフローのトラブルシューティングに関するページを参照してください。

  3. ワークフローによって、適切なストレージ コンテナーにメールと添付ファイルが保存されたことを確認します。

    1. Storage Explorer で [エミュレーターとアタッチ状態]>[ストレージ アカウント]>[attachmentstorageacct (キー)]>[BLOB コンテナー]>[添付ファイル] の順に展開します。

    2. メールと添付ファイルが両方とも存在することを attachments コンテナーで確認します。

      Storage Explorer と保存されたメールおよび添付ファイルを示すスクリーンショット。

    3. ここまで終えたら Storage Explorer からメールと添付ファイルを削除します。

次に、添付ファイルの確認依頼メールをワークフローから送信するためのアクションを追加します。

メール通知を送信する

  1. デザイナーに戻ります。 [True] 分岐で、[メールの添付ファイルごと] ループを折りたためます。

  2. このループの下で、[アクションの追加] を選択します。

    折りたたまれた [For each] ループを示すスクリーンショット。ループの下で、[アクションの追加] オプションが選択されています。

  3. [操作を選択してください] の検索ボックスで、[Standard] を選択します。 検索ボックスに、「send email」と入力します。

  4. アクションの一覧で、ご自分のメール プロバイダーのメールの送信アクションを選択します。 特定のコネクタに基づいてアクションの一覧をフィルター処理するには、最初にそのコネクタを選択します。

    この例では、引き続き Office 365 Outlook コネクタを使用します。これは、Azure の職場または学校アカウントでのみ動作します。 個人用 Microsoft アカウントの場合は、Outlook.com コネクタを選択します。

    Office 365 Outlook のメール送信アクションが選択されていることを示すスクリーンショット。

  5. 資格情報を求められた場合は、お使いのメール アカウントへの接続が Azure Logic Apps によって作成されるように、そのメール アカウントにサインインします。

  6. [メールの送信] アクションの名前を、次のようにわかりやすく変更します: レビュー用にメールを送信する

  7. 次のアクション情報を指定し、メールに含めるフィールドを選択します。

    • 編集ボックスで空白行を追加するには、Shift + Enter キーを押します。
    • 動的コンテンツ リストで必要なフィールドが見つからない場合は、 [新しい電子メールが届いたとき] の横の [See more](詳細表示) を選択します。
    プロパティ 説明
    To <recipient-email-address> テスト目的で自分の電子メール アドレスを使用できます。
    件名 ASAP - Review applicant for position:件名 メールに付ける件名。 このボックス内をクリックし、サンプル テキストを入力して、動的コンテンツ リストから [新しい電子メールが届いたとき][Subject] フィールドを選択します。
    本文 Please review new applicant:

    Applicant name:差出人

    Application file location:パス

    Application email content:本文

    メールの本文の内容。 このボックス内をクリックし、サンプル テキストを入力して、動的コンテンツ リストから次のフィールドを選択します。

    - [新しいメールが届いたとき] の下の [差出人] フィールド
    - [Create blob for email body](メール本文に使う BLOB を作成する) の下の [パス] フィールド
    - [Call RemoveHTMLFunction to clean email body](メール本文をクリーンアップするために RemoveHTMLFunction を呼び出す) の下の [本文] フィールド

    送信するメールのサンプルを示すスクリーンショット。

    Note

    [コンテンツ] フィールド (添付ファイルを保持する配列) など、配列が格納されているフィールドを選択すると、そのフィールドを参照するアクションに [For each] ループが自動的に追加されます。 こうすることで、ワークフローは、そのアクションを各配列項目に対して実行できます。 ループを削除するには、配列のフィールドを削除し、その参照アクションをループの外に移動して、ループのタイトル バーにある省略記号 ( ... ) を選択し、 [削除] を選択します。

  8. ワークフローを保存します。

次に、ワークフローをテストします。次の例のようになります。

完成したワークフローを示すスクリーンショット。

ワークフローを実行する

  1. 次の基準を満たすメールをご自身で送信してください。

    • トリガーの [件名フィルター] プロパティに指定したテキスト (Business Analyst 2 #423501) をメールの件名に含めます。

    • メールに添付ファイルを少なくとも 1 つ追加します。 先ほどのテストで使った空のテキスト ファイルを再利用してかまいません。 より実用的な使い方を想定するならば、履歴書のファイルを添付します。

    • メールの本文には次のテキストを記述します。これをコピーして貼り付けてください。

      
      Name: Jamal Hartnett
      
      Street address: 12345 Anywhere Road
      
      City: Any Town
      
      State or Country: Any State
      
      Postal code: 00000
      
      Email address: jamhartnett@outlook.com
      
      Phone number: 000-000-0000
      
      Position: Business Analyst 2 #423501
      
      Technical skills: Dynamics CRM, MySQL, Microsoft SQL Server, JavaScript, Perl, Power BI, Tableau, Microsoft Office: Excel, Visio, Word, PowerPoint, SharePoint, and Outlook
      
      Professional skills: Data, process, workflow, statistics, risk analysis, modeling; technical writing, expert communicator and presenter, logical and analytical thinker, team builder, mediator, negotiator, self-starter, self-managing  
      
      Certifications: Six Sigma Green Belt, Lean Project Management
      
      Language skills: English, Mandarin, Spanish
      
      Education: Master of Business Administration
      
  2. ワークフローを実行する。 正常に実行された場合、次のようなメールがワークフローから送信されます。

    ロジック アプリ ワークフローによって送信されたメールの例を示すスクリーンショット。

    メールが届かない場合は、迷惑メール フォルダーを確認してください。 この種のメールは、迷惑メール フィルターによってリダイレクトされる場合があります。 また、ワークフローが正しく動作しているかどうかわからない場合は、ロジック アプリ ワークフローのトラブルシューティングに関するページを参照してください。

お疲れさまでした。各種 Azure サービスの垣根を越えてタスクを自動化し、カスタム コードを呼び出すワークフローを作成し、実行することができました。

リソースをクリーンアップする

このサンプルの必要がなくなったら、ロジック アプリ ワークフローと関連リソースが含まれるリソース グループを削除しましょう。

  1. Azure portal の一番上にある検索ボックスに「リソース グループ」と入力し、[リソース グループ] を選択します。

  2. [リソース グループ] の一覧から、このチュートリアルのリソース グループを選択します。

  3. リソース グループの [概要] ページ ツール バーで、[リソース グループの削除] を選択します。

  4. 確認ウィンドウが表示されたら、リソース グループ名を入力して、 [削除] を選択します。

次のステップ

このチュートリアルでは、Azure Storage と Azure Functions など各種 Azure サービスを統合することによって、メールの添付ファイルを処理して保存するロジック アプリ ワークフローを作成しました。 ロジック アプリ ワークフローの作成に使うことのできるコネクタは他にもあります。それらのコネクタについて詳しく見ていきましょう。