次の方法で共有


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

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

このチュートリアルでは、Azure Logic Apps を使用して、Azure Functions と Azure Storage を統合するサンプル ワークフローを構築する方法について説明します。 この例では、受信メールと添付ファイルを処理し、Azure Functions を使ってメール コンテンツを分析し、そのコンテンツを Azure Storage に保存し、コンテンツを確認するためのメールを送信する従量課金ロジック アプリ ワークフローを構築する方法について具体的に説明します。

完了すると、ワークフローは次の大まかな例のようになります。

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

ヒント

詳細について、Azure Copilot に次のように質問することができます。

  • Azure Logic Apps とは
  • Azure Functions とは
  • Azure Storage とは
  • "従量課金のロジック アプリ ワークフローとは何ですか?"

Azure Copilot を見つけるには、Azure portal のツール バーで、[Copilot] を選択します。

Azure Blob Storage などの一部のコネクタ操作が、組み込みのサービス プロバイダー ベースの操作としても使用できる Standard ロジック アプリ リソースを使用して、同様のワークフローを作成できます。 ただし、ユーザー エクスペリエンスとチュートリアルの手順は、従量課金バージョンとは若干異なります。

前提条件

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

  • Azure Logic Apps がサポートするメール プロバイダー (Office 365 Outlook、Outlook.com、Gmail など) のメール アカウント。 サポートされている他の電子メール プロバイダーについては、「Azure Logic Apps のコネクタ」をご覧ください。

    この例では、Office 365 Outlook と職場または学校アカウントを使用します。 別のメール アカウントを使う場合、おおよその手順は変わりませんが、ユーザー エクスペリエンスがやや異なることがあります。 Outlook.com を使用する場合は、代わりに個人用 Microsoft アカウントを使用してサインインします。

    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 アドレスに対するアクセスも許可する必要があります。

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

次の手順では、受信メールと添付ファイルを BLOB として格納できるように、Azure Storage を設定します。

  1. Azure アカウントの資格情報で Azure portal にサインインします。

  2. ストレージ アカウントが既にある場合を除き、次の手順に従ってストレージ アカウントを作成します。

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

    プロパティ 必要 説明
    サブスクリプション はい <Azure サブスクリプション名> Azure サブスクリプション名。

    この例では、従量課金制を使用します。
    リソース グループ はい <Azure-resource-group> Azure リソース グループの名前。関連するリソースをまとめて管理する目的で使われます。

    注: リソース グループは、特定のリージョン内に存在します。 このチュートリアルで使う項目が、一部のリージョンでは利用できない場合もありますが、可能な限り同じリージョンを使うようにしてください。

    この例では、LA-Tutorial-RG を使用します。
    Storage account name (ストレージ アカウント名) はい <Azure-storage-account-name> 一意のストレージ アカウント名。3 から 24 文字で構成する必要があり、小文字と数字のみを含めることができます。

    この例では、attachmentstorageacct を使用します。
    リージョン はい <Azure-region> ストレージ アカウントの Azure データ リージョン。

    この例では米国西部を使用します。
    プライマリ サービス いいえ <Azure Storage サービス> ストレージ アカウントで使用するプライマリ ストレージの種類。 「Azure にデータを格納するためのオプションを確認する」を参照してください。
    パフォーマンス はい - Standard
    - Premium
    サポートされるデータの種類とデータの保存メディアは、この設定で指定します。 「ストレージ アカウントの概要」を参照してください。

    この例では、Standard を使用します。
    冗長性 はい - ローカル冗長ストレージ
    - geo 冗長ストレージ (GRS)
    この設定により、計画イベントと計画外イベントからの保護として、データの複数のコピーを格納できます。 詳細については、「Azure Storage の冗長性」を参照してください。

    この例では、geo 冗長ストレージ (GRS) を使用します。

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

  3. 準備ができたら、[確認および作成] を選択します。 Azure によってストレージ アカウント リソースに関する情報が検証されたら、[作成] を選択します。

  4. Azure によってストレージ アカウントがデプロイされたら、[リソースに移動] を選択します。 または、Azure 検索ボックスを使用して、ストレージ アカウントを見つけて選択します。

  5. 次の手順に従って、ストレージ アカウントのアクセス キーを取得します。

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

    2. [ストレージ アカウント名] と [key1] をコピーします。 これらの値は、後で使用するために安全な場所に保存してください。

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

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

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

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

    3. [新しいコンテナー] ウィンドウで、次の情報を指定します。

      プロパティ 内容
      名前 attachments コンテナー名。
      匿名アクセス レベル コンテナー (コンテナーと BLOB 用の匿名読み取りアクセス)
    4. [作成] を選択します

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

ストレージ コンテナーは、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. [ストレージのドメイン] に対し、[Azure (core.windows.net)] が選択されていることを確認し、[次へ] を選択します。

  10. [概要] ウィンドウで接続情報を確認し、[接続] を選択します。

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

  11. BLOB ストレージ コンテナーを見つけるには、[ストレージ アカウント] でストレージ アカウントを展開します。ストレージ アカウントは、この例では attachmentstorageacct です。 [Blob コンテナー] で、次に例を示す attachments コンテナーを見つけます。

次に、コンテンツから HTML を削除する Azure 関数アプリと関数を作成します。

Function App を作成する

次の手順では、受信メールから HTML を削除するためにワークフローが呼び出す Azure 関数を作成します。

  1. 関数を作成する前に、従量課金プランを選択し、次の手順に従って関数アプリを作成します

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

      プロパティ 必要 説明
      サブスクリプション はい <Azure サブスクリプション名> ストレージ アカウントに以前に使用したのと同じ Azure サブスクリプション。
      リソース グループ はい <Azure リソース グループ名>< 以前にストレージ アカウントに使用したのと同じ Azure リソース グループ。

      この例では、[LA-Tutorial-RG] を選択します。
      関数アプリ名 はい <関数アプリの名前> 関数アプリ名。Azure リージョン間で一意である必要があり、文字 (大文字と小文字を区別しない)、数字 (0 から 9)、ハイフン (-) のみを含められます。

      この例では既に CleanTextFunctionApp が使用されているため、別の名前 (たとえば MyCleanTextFunctionApp-<your-name>) を付けます
      ランタイム スタック はい <プログラミング言語> お好みの関数プログラミング言語のランタイム。 C# および F# 関数の場合は [.NET] を選択します。

      この例では、.NET を使用します。

      ポータル内編集は、次の言語でのみ使用できます。

      - JavaScript
      - PowerShell
      - TypeScript
      - C# スクリプト

      任意の C# クラス ライブラリ、Java、Python 関数をローカルで開発する必要があります。
      Version はい <バージョン番号> インストールされているランタイムのバージョンを選択します。
      リージョン はい <Azure-region> 先ほど使用したものと同じリージョン。

      この例では米国西部を使用します。
      オペレーティング システム はい <オペレーティング システム> オペレーティング システムは、ランタイム スタックの選択に基づいてあらかじめ選択されていますが、お気に入りの関数プログラミング言語に対応したオペレーティング システムを選択できます。 ポータルでの編集は Windows でのみサポートされます。

      この例では Windows が選択されています。
    2. [Next:Storage](次へ: ストレージ) を選択します。 [ストレージ] タブで次の情報を指定します。

      プロパティ 必要 説明
      ストレージ アカウント はい <Azure-storage-account-name> 使用する関数アプリに使うストレージ アカウントを作成します。 ストレージ アカウント名の長さは 3 から 24 文字にする必要があり、使用できるのは小文字と数字のみです。

      この例では、cleantextfunctionstorageacct を使用します。

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

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

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

次の手順では、サンプル コード スニペットを使用して、受信した各電子メールから HTML を削除する Azure 関数を作成します。 この機能を使用すると、電子メールのコンテンツから余分な要素が取り除かれ、処理が容易になります。 この関数をワークフローから呼び出すことができます。

詳細については、「Azure Portal で初めての関数を作成する」を参照してください。 関数の作成を拡張するには、関数をローカルで作成することもできます。

  1. Azure portal で、関数アプリを開きます (まだ開いていない場合)。

  2. Azure portal で後で関数を実行するには、ポータルからの要求を明示的に受け入れるように、関数アプリを設定します。 関数アプリのメニューで、[API] の下にある [CORS] を選択します。 [許可される元のドメイン]に「https://portal.azure.com」と入力し、[保存] を選択します。

  3. 関数アプリのメニューで、[概要] を選択します。 [関数] タブで、[作成] を選択します。

  4. [関数の作成] ペインで、[HTTP トリガー: C#]>[次へ] の順に選択します。

    Note

    C# バージョンが表示されない場合は、次の操作を実行します。

  5. 関数に対して次の情報を指定し、[作成] を選択します。

    パラメーター
    関数名 RemoveHTMLFunction を選択します。
    承認レベル Function
  6. [コードとテスト] タブで、次のサンプル コードを入力します。これにより HTML が削除され、結果が呼び出し元に返されます。

    #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});
    }
    
  7. 完了したら、[コードとテスト] ツール バーの [保存] を選択し、[テストと実行] を選択します。

  8. [テストと実行] ペインの [入力] タブの [本文] ボックスに次のサンプル入力を入力し、[実行] を選択します。

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

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

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

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

従量課金のロジック アプリ リソースを作成する

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

  2. [ロジック アプリ] ページのツール バーで [追加] を選びます。

    [ロジック アプリの作成] ページが表示され、次のオプションが表示されます。

    プラン 説明
    従量課金プラン マルチテナント Azure Logic Apps で実行され、課金に従量課金モデルを使用するワークフローを 1 つだけサポートするロジック アプリ リソースを作成します。
    Standard 複数のワークフローをサポートするロジック アプリ リソースを作成します。 次のオプションがあります。

    - ワークフロー サービス プラン: ワークフローはシングルテナントの Azure Logic Apps で実行され、課金に Standard モデルを使用します。

    - App Service Environment V3: ワークフローはシングルテナントの Azure Logic Apps で実行され、課金に App Service Environment プランを使用します。

    - ハイブリッド (プレビュー): Kubernetes イベント ドリブン自動スケーリング (KEDA) を使用して、オンプレミスおよび複数のクラウドでワークフローが実行されます。 詳細については、「ハイブリッド デプロイの Standard ワークフローを作成する」を参照してください。
  3. [ロジック アプリの作成] ページで、[従量課金 (マルチテナント)] を選択します。

  4. [基本] タブで、ロジック アプリ リソースに関する次の情報を指定します。

    パラメーター 必須 説明
    サブスクリプション はい <Azure サブスクリプション名> 先ほど使用したものと同じ Azure サブスクリプション。
    リソース グループ はい LA-Tutorial-RG 先ほど使用したものと同じ Azure リソース グループ。
    ロジック アプリ名 はい <ロジック アプリ名> ロジック アプリ リソースの名前。リージョン間で一意である必要があり、文字、数字、ハイフン (-)、アンダースコア (_)、かっこ (())、およびピリオド (.) のみを含めることができます。

    この例では、LA-ProcessAttachment という名前のロジック アプリ リソースを作成します。 従量課金ロジック アプリとワークフローの名前は常に同じです。
    リージョン はい 米国西部 先ほど使用したものと同じリージョン。
    Log Analytics を有効にする はい いいえ 診断ログを有効にする場合にのみ、このオプションを変更します。 このチュートリアルでは、既定の選択をそのまま使います。

    : このオプションは、従量課金ロジック アプリでのみ使用できます。

    Note

    可用性ゾーンは、可用性ゾーンをサポートする Azure リージョン内の新規および既存の従量課金ロジック アプリ ワークフローに対して自動的に有効になります。 詳細については、「Azure Functions の信頼性」および「ゾーン冗長と可用性ゾーンを使用してゾーン障害からロジック アプリを保護する」を参照してください。

  5. 準備ができたら、[確認および作成] を選択します。 Azure によってロジック アプリ リソースに関する情報が検証されたら、[作成] を選択します。

  6. Azure によってロジック アプリ リソースがデプロイされたら、[リソースに移動] を選択します。 または、Azure の検索ボックスを使用して自分のロジック アプリ リソースを見つけて選択します。

受信メールを監視するトリガーを追加する

次の手順では、添付ファイルを含む受信メールを監視するトリガーを追加します。

  1. ロジック アプリ メニューの [開発ツール] で、[ロジック アプリ デザイナー] を選択します。

  2. ワークフロー デザイナーで、この一般的な手順に従って、「新しいメールが届いたとき」という名前の Office 365 Outlook トリガーを追加します。

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

  3. お使いのメール アカウントにサインインします。これにより、ワークフローとメール アカウントの間に接続が作成されます。

  4. トリガー情報ボックスの [高度なパラメーター] 一覧から、次のパラメーターが表示されない場合は追加し、次の情報を指定します。

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

    注: このトリガーは、お使いのアカウントからメールを削除することはありません。新着メッセージだけをチェックし、件名フィルターに一致するメールだけを処理します。
    添付ファイルを含める はい 添付ファイルの有無をチェックするだけでなく、ワークフローの入力として添付ファイルを取得します。
    フォルダー Inbox チェックするメール フォルダー。
    件名フィルター ビジネス アナリスト 2 #423501 メールの件名から探すテキストを指定します。

    完了すると、トリガーは次の例のようになります。

    従量課金ワークフローと Office 365 Outlook トリガーを示すスクリーンショット。

  5. ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

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

添付ファイルをチェックする条件を追加する

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

  1. ワークフロー デザイナーで、この一般的な手順に従って、「条件」という名前の制御アクションを追加します。

  2. [条件] アクション情報ウィンドウで、アクションの名前を「メールに添付ファイルとキーの件名フレーズがある場合」に変更します。

  3. 添付ファイルが含まれているメールをチェックする条件を構築します。

    1. [パラメーター] タブの [AND] リストの最初の行で、左側のボックス内を選択し、動的コンテンツ リスト (稲妻アイコン) を選択します。 この一覧のトリガー セクションで、[添付ファイルあり] 出力を選択します。

      ヒント

      [添付ファイルあり] 出力が表示されない場合は、[詳細表示] を選択します。

      スクリーンショットは、条件アクション、左端のボックスにカーソルがある 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"
    }
    
  4. ワークフローを保存します。

条件をテストする

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

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

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

    • トリガーの [件名フィルター]: [ビジネス アナリスト 2 #423501] に指定したテキストをメールの件名に含めます

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

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

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

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

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

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

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

注意

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

RemoveHTMLFunction を呼び出す

次の手順では、以前に作成した Azure 関数を追加します。この関数は、電子メール トリガーからの電子メール本文の内容を入力として受け入れます。

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

  2. この一般的な手順に従い、「Azure 関数を選択する」という名前の Azure Functions アクションを追加します。

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

  4. この例では、[RemoveHTMLFunction] という名前の関数を選択し、[アクションの追加] を選択します。

  5. [Azure Functions] アクション情報ペインで、アクションの名前を「RemoveHTMLFunction の呼び出し」に変更します。

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

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

      { "emailBody":

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

    2. [要求本文] ボックスの内部を選択し、動的コンテンツ リスト (稲妻アイコン) を選択し、前のアクションからの出力を選択できるようにします。

    3. 動的コンテンツ リストで、[新しい電子メールが届いたとき][本体] 出力を選択します。 この値が [要求本文] ボックスで解決されたら、必ず右中かっこ (}) を追加してください。

      スクリーンショットは、動的コンテンツ リストと [本文] が選択された Azure 関数情報ボックスを示しています。

    完了すると、Azure 関数は次の例のようになります。

    完成した Azure 関数と、関数に渡す要求本文の内容を示すスクリーンショット。

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

次に、電子メール本文を格納する BLOB を作成するアクションを追加します。

電子メール本文の BLOB を作成するアクションを追加する

次の手順では、ストレージ コンテナーに電子メール本文を格納する BLOB を作成します。

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

  2. この一般的な手順に従って、「BLOB の作成」という名前の Azure Blob Storage アクションを追加します。

  3. ストレージ アカウントの接続情報を指定します。次に例を示します。

    パラメーター 必須 説明
    Connection Name はい <connection-name> 接続のわかりやすい名前。

    この例では、AttachmentStorageConnection を使用します。
    認証の種類 はい <authentication-type> 接続に使用する認証の種類。

    この例では、[アクセス キー] を使用します。
    Azure Storage アカウント名または BLOB エンドポイント はい <storage-account-name> 以前に作成したストレージ アカウントの名前。

    この例では、attachmentstorageacct を使用します。
    Azure ストレージ アカウントのアクセス キー はい <ストレージ アカウント アクセス キー> 以前に作成したストレージ アカウントのアクセス キー。
  4. 完了したら、[新規作成] を選択します。

  5. [BLOB の作成] アクション情報ウィンドウで、アクションの名前を「メールの本文に使う BLOB を作成する」に変更します。

  6. 次のアクション情報を指定します。

    ヒント

    動的コンテンツ リストに指定された出力が見つからない場合は、操作名の横にある [詳細表示] を選択します。

    パラメーター 必須 説明
    ストレージ アカウント名または BLOB エンドポイント はい 接続設定を使用する (<storage-account-name-or-blob-endpoint>) ストレージ アカウント名を含むオプションを選択します。

    この例では、https://attachmentstorageacct.blob.core.windows.net を使用します。
    フォルダーのパス はい <パスおよびコンテナー名> あらかじめ作成しておいたコンテナーのパスと名前。

    この例では、フォルダー アイコンを選択し、[添付ファイル] を選択します。
    BLOB 名 はい <送信者名> この例では、BLOB の名前として送信者の名前を使用します。

    1.[BLOB 名] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    2.[新しいメールが届いたとき] セクションで、[差出人] を選択します。
    BLOB コンテンツ はい <cleaned-email-body> この例では、HTML が削除されたメールの本文を BLOB コンテンツとして使用します。

    1.[Blob コンテンツ] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    2.[RemoveHTMLFunction の呼び出し] セクションで、[本文]を選択します。

    次のスクリーンショットは、[メールの本文に使う BLOB を作成する] アクションに選択する出力を示しています。

    [BLOB の作成] アクションのストレージ コンテナー、送信者、HTML なしの電子メール本文を示すスクリーンショット。

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

    完了した BLOB の作成アクションの電子メール本文情報の例を示すスクリーンショット。

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

添付ファイルの処理をテストする

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

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

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

    • トリガーの [件名フィルター] パラメーター: [ビジネス アナリスト 2 #423501] に指定したテキストをメールの件名に含めます

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

    • 電子メールの本文には、次のようなテスト コンテンツがあります。例: ロジック アプリ ワークフローのテスト

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

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

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

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

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

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

    3. 完了したら、Storage Explorer からメールを削除します。

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

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

添付ファイルを処理するループを追加する

次の手順で、メール内の各添付ファイルを処理するループを追加します。

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

  2. この一般的な手順に従って、「For each」という名前の制御アクションを追加します。

  3. [For each] アクション情報ウィンドウで、アクションの名前を「[For each email attachment]」に変更します。

  4. 次に、処理するループの内容を選択します。

    1. [For each email attachment] ループで、[以前の手順から出力を選択] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    2. [新しいメールが届いたとき] セクションで、[添付ファイル] を選択します。

      [添付ファイル] 出力には、電子メールからのすべての添付ファイルを含む配列が含まれています。 [For each] ループは、各配列項目に対してアクションを繰り返します。

      ヒント

      [添付ファイル] が表示されない場合は、[詳細表示] を選択します。

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

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

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

添付ファイルごとに BLOB を作成するアクションを追加する

次の手順では、添付ファイルごとに BLOB を作成するアクションを追加します。

  1. デザイナーの [For each email attachment] ループで、[アクションの追加] を選択します。

  2. この一般的な手順に従って、「BLOB の作成」という名前の Azure Blob Storage アクションを追加します。

  3. [BLOB の作成] アクション情報ウィンドウで、アクションの名前を「メールの添付ファイルに使う BLOB を作成する」に変更します。

  4. 次のアクション情報を指定します。

    ヒント

    動的コンテンツ リストに指定された出力が見つからない場合は、操作名の横にある [詳細表示] を選択します。

    パラメーター 必須 説明
    ストレージ アカウント名または BLOB エンドポイント はい 接続設定を使用する (<storage-account-name-or-blob-endpoint>) ストレージ アカウント名を含むオプションを選択します。

    この例では、https://attachmentstorageacct.blob.core.windows.net を使用します。
    フォルダーのパス はい <パスおよびコンテナー名> あらかじめ作成しておいたコンテナーのパスと名前。

    この例では、フォルダー アイコンを選択し、[添付ファイル] を選択します。
    BLOB 名 はい <添付ファイル名> この例では、BLOB の名前として添付ファイルの名前を使用します。

    1.[BLOB 名] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    2.[新しいメールが届いたとき] セクションで、[名前] を選択します。
    BLOB コンテンツ はい <email-content> この例では、メール コンテンツを BLOB コンテンツとして使用します。

    1.[Blob コンテンツ] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    2.[新しいメールが届いたとき] セクションで、[コンテンツ] を選択します。

    Note

    [コンテンツ] 出力 (添付ファイルを含む配列) などの配列を含む出力を選択すると、デザイナーは、その出力を参照するアクションの For each ループを自動的に追加します。 こうすることで、ワークフローは、そのアクションを各配列項目に対して実行できます。 ループを削除するには、出力を参照するアクションをループの外側に移動し、ループを削除します。

    次のスクリーンショットは、[メールの添付ファイルに使う BLOB を作成する] アクションに対して選択する出力を示しています。

    [BLOB の作成] アクションのストレージ コンテナーと添付ファイルの情報を示すスクリーンショット。

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

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

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

添付ファイルの処理を再テストする

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

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

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

    • トリガーの [件名フィルター] パラメーター: [ビジネス アナリスト 2 #423501] に指定したテキストをメールの件名に含めます

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

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

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

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

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

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

    3. 完了したら、Storage Explorer からメールと添付ファイルを削除します。

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

電子メールを送信するアクションを追加する

次の手順で、アクションをワークフローに追加し、添付ファイルの確認依頼メールをワークフローが送信できるようにします。

  1. ワークフロー デザイナーに戻ります。 [True] 分岐の [For each email attachment] ループで [アクションの追加] を選択します。

  2. この一般的な手順に従って、「メールの送信」という名前の Office 365 Outlook アクションを追加します

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

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

  4. [電子メールの送信] アクション情報ウィンドウで、アクションの名前を「確認用メールの送信」に変更します。

  5. 次のアクション情報を指定し、メールに含める出力を選択します。

    ヒント

    動的コンテンツ リストに指定された出力が見つからない場合は、操作名の横にある [詳細表示] を選択します。

    パラメーター 必須 説明
    To はい <recipient-email-address> テスト目的のため、自分の電子メール アドレスを使用します。
    件名 はい <email-subject> 含める電子メールの件名。

    この例では、「ASAP - 職務の応募者の検討のお願い:」とトリガーからの [件名] 出力を使用します。

    1.[件名] ボックスに、末尾にスペースを含むテキストの例を入力します。

    2.[件名] ボックス内を選択し、動的コンテンツ リスト オプション (稲妻アイコン) を選択します。

    3.一覧の [新しいメールが届いたとき] で、[件名]を選択します。
    本文​​ はい <電子メールの本文> 含める電子メール本文。

    この例では、[新しい応募者の検討のお願い:][差出人] という名前のトリガー出力、[メールの本文に使う BLOB を作成する] アクションからの [パス] 出力、[RemoveHTMLFunction の呼び出し] アクションからの [本文] 出力を使用します。

    1.[本文] ボックスに、例のテキスト「新しい応募者の検討のお願い:」を入力します。

    2.新しい行に、例のテキスト「応募者名:」を入力し、トリガーからの [差出人] 出力を追加します。

    3.新しい行に、例のテキスト「アプリケーション ファイルの場所:」を入力し、[メールの本文に使う BLOB を作成する] アクションからの [パス] 出力を追加します。

    4.新しい行に、例のテキスト「アプリケーション メールの内容:」を入力し、[RemoveHTMLFunction の呼び出し] アクションからの [本文] 出力を追加します。

    Note

    [コンテンツ] 出力 (添付ファイルを含む配列) などの配列を含む出力を選択すると、デザイナーは、その出力を参照するアクションの For each ループを自動的に追加します。 こうすることで、ワークフローは、そのアクションを各配列項目に対して実行できます。 ループを削除するには、出力を参照するアクションをループの外側に移動し、ループを削除します。

    次のスクリーンショットは、完了した電子メールの送信アクションを示しています。

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

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

完成したワークフローは次の例のようになります。

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

ワークフローのテスト

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

    • トリガーの [件名フィルター] パラメーター: [ビジネス アナリスト 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. [概要] ページのツール バーで、[リソース グループの削除] を選択します。

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

次のステップ

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