AEM Forms の送信アクションの設定

AEM Forms と Edge Delivery Services を使用して、フォーム送信処理を設定し、データをスプレッドシート、メール、バックエンドシステムにルーティングします。

クイック決定ガイド

送信方法を選択します。

メソッド
次に最適
設定の複雑さ
ユースケース
Forms 送信サービス
シンプルなデータキャプチャ
お問い合わせフォーム、調査、基本データ収集
AEM パブリッシュ送信
複雑なワークフロー
エンタープライズ統合、カスタム処理、ワークフロー

前提条件

送信アクションを設定する前に、次を確認します。

  • AEM Forms as a Cloud Service インスタンス
  • Edge Delivery Services プロジェクトが設定されている
  • ドキュメントオーサリングまたはユニバーサルエディターを使用してフォームが作成済みである
  • ターゲットの宛先(スプレッドシート、メールシステム、AEM)に必要な権限がある
方法 1:Forms 送信サービス

Forms 送信サービスは、シンプルなデータキャプチャシナリオに最適な、アドビがホストするエンドポイントです。

サポートされる宛先

  • スプレッドシート:Google Sheets、Microsoft Excel(OneDrive/SharePoint)
  • メール:フォームデータを指定されたメールアドレスに送信します

設定手順

  1. 宛先アクセスを設定

    • スプレッドシートの場合:ターゲットスプレッドシートで forms@adobe.com に編集権限を付与します
    • メールの場合:受信者のメールアドレスにアクセスできることを確認します
  2. フォーム送信を設定

    • フォームをオーサリング環境で開きます
    • 送信アクションを「Forms 送信サービス」に設定します
    • ターゲットスプレッドシートの URL またはメールアドレスを指定します
    • フォームを保存して公開します
  3. 送信をテスト

    • フォームを通じてテストデータを送信します
    • ターゲットの宛先にデータが表示されることを確認します
    • 送信に失敗した場合はエラーログを確認します

重要な注意事項

  • サービスアカウント forms@adobe.com には、ターゲットスプレッドシートへの編集アクセス権が必要です
  • フォームを送信するとすぐにメール通知が送信されます
  • データ検証はサービスレベルで行われます

Forms 送信サービスのフロー

方法 2:AEM パブリッシュ送信

複雑な処理のために、フォームデータを AEM as a Cloud Service パブリッシュインスタンスに直接送信します。

AEM パブリッシュを使用するタイミング

  • 送信後に必要なカスタム AEM ワークフロー
  • フォームデータモデル(FDM)とデータベースの統合
  • サードパーティサービスとの統合(Marketo、Power Automate、Workfront Fusion)
  • Azure Blob Storage または SharePoint ドキュメントライブラリ
  • 複雑なサーバーサイド検証または処理ロジック

使用可能な送信アクション

AEM パブリッシュ送信のフロー

設定要件

​1. Edge Delivery で AEM インスタンス URL を更新

constant.js ファイル内の submitBaseUrl の下の form ブロックにある AEM Cloud Service インスタンス URL を更新します。環境に応じて URL を設定できます。

Cloud Service インスタンスの場合

code language-js
export const submitBaseUrl = '<aem-publish-instance-URL>';

ローカル開発の場合

code language-js
export const submitBaseUrl = 'http://localhost:<port-number>';

​2. OSGi リファラーフィルター

リファラーフィルターを設定して、特定の Edge Delivery サイトのドメインを許可します。

  1. OSGi 設定ファイル org.apache.sling.security.impl.ReferrerFilter.cfg.json を作成または更新します。

  2. 特定のサイトドメインを使用して、次の設定を追加します。

    code language-json
    {
      "allow.empty": false,
      "allow.hosts": [
        "main--abc--adobe.aem.live",
        "main--abc1--adobe.aem.live"
      ],
      "allow.hosts.regexp": [
        "https://.*\\.aem\\.live:443",
        "https://.*\\.aem\\.page:443",
        "https://.*\\.hlx\\.page:443",
        "https://.*\\.hlx\\.live:443"
      ],
      "filter.methods": [
        "POST",
        "PUT",
        "DELETE",
        "COPY",
        "MOVE"
      ],
      "exclude.agents.regexp": [
        ""
      ]
    }
    
  3. Cloud Manager を通じて設定をデプロイします

OSGi リファラーフィルターの設定について詳しくは、リファラーフィルターガイドを参照してください。

​3. CORS(クロスオリジンリソース共有)の問題

AEM で CORS を設定して、特定の Edge Delivery サイトドメインからのリクエストを許可します。

開発者ローカルホスト

code language-apache
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(http://localhost(:\d+)?$)#" CORSTrusted=true

Edge Delivery Sites - 各サイトドメインを個別に追加

code language-apache
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://main--abc--adobe\.aem\.live$)#" CORSTrusted=true
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://main--abc1--adobe\.aem\.live$)#" CORSTrusted=true

レガシー Franklin ドメイン(まだ使用中の場合)

code language-apache
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://.*\.hlx\.page$)#" CORSTrusted=true
SetEnvIfExpr "env('CORSProcessing') == 'true' && req_novary('Origin') =~ m#(https://.*\.hlx\.live$)#" CORSTrusted=true
note note
NOTE
main--abc--adobe.aem.livemain--abc1--adobe.aem.live を実際のサイトドメインに置き換えます。同じリポジトリからホストされる各サイトには、個別の CORS 設定エントリが必要です。

CORS 設定について詳しくは、CORS 設定ガイドを参照してください。

ローカル開発環境で CORS を有効にするには、クロスオリジンリソース共有(CORS)についての記事を参照してください。

​4. フォームの設定

  1. ユニバーサルエディターでフォームを作成します
  2. AEM Forms アクションをターゲットにする送信アクションを設定します
  3. 送信エンドポイントパスを指定します
  4. Edge Delivery サイトにフォームを公開します
よくある問題
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2
問題 解決策
フォームの送信に失敗する コンソールのエラーを確認し、エンドポイント URL を検証し、権限を確認します
埋め込みフォームが表示されない フォームソースに CORS ヘッダーを設定し、フォーム URL を検証します
AEM の 403/401 エラー Sling リファラーフィルターを更新し、認証設定を確認します
データがスプレッドシートに到達しない forms@adobe.com に編集アクセス権があることを検証し、スプレッドシートの URL を確認します
CORS エラー フォームソースに適切な Access-Control-Allow-Origin ヘッダーを追加します

設定例

スプレッドシート送信付きのドキュメントベースのフォーム
  1. Google Docs/Sheets でフォーム構造を作成します
  2. Forms 送信サービスのエンドポイントを設定します
  3. forms@adobe.com にターゲットスプレッドシートへの編集権限を付与します
  4. ドキュメントを Edge Delivery サイトに公開します
  5. フォーム送信とデータフローをテストします
AEM ワークフローを使用したユニバーサルエディターフォーム
  1. ユニバーサルエディターでフォームを構築します
  2. 送信アクションを「AEM ワークフローを起動」に設定します
  3. AEM パブリッシュで Dispatcher とリファラーフィルターを設定します
  4. CDN ルーティングルールを設定します
  5. フォームを公開し、ワークフロー実行をテストします

ベストプラクティス

  • シンプルなデータキャプチャシナリオには Forms 送信サービスを使用 ​します
  • 複雑な処理や統合が必要な場合は、AEM パブリッシュを選択 ​します
  • 実稼動環境へのデプロイメント前に、ステージング環境で​ 徹底的にテスト ​します
  • AEM ログとコンソールエラーを使用して​ 送信を監視 ​します
  • 送信に失敗した場合は、適切なエラー処理を実装 ​します
  • クライアントレベルとサーバーレベルの両方で​ データを検証 ​します
  • すべてのフォーム送信とデータ転送に HTTPS を使用 ​します

関連トピック

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab