Forms
AEM 提供表单服务,该服务可将提交的数据提取到 Microsoft Excel 或 Google 工作表文档中。
通过您网站上的表单提交的数据会直接流入电子表格中,因此企业用户可轻松访问。 此类数据还可以与更复杂的自动化工作流交互,因为Google Sheets以及Microsoft Excel和Sharepoint都提供了对生机勃勃的生态系统和强大API的访问。
准备工作表以进行数据摄取
-
在项目目录下的任何位置创建Excel工作簿或Google工作表。 本文档在OneDrive中使用了一个名为的工作表
email-form.xlsx
在AEM项目的根目录下。 -
确保AEM用户(例如 helix@adobe.com)对于对于您的项目所配置的 编辑权限 在工作表上。
-
打开创建的工作簿,并将默认工作表重命名为
incoming
.
注意: 如果符合以下条件,AEM将不会向此工作簿发送任何数据incoming
工作表不存在。 -
在 Sidekick 中预览工作表。
注意: 即使以前预览过工作表,也必须在创建incoming
首次填写工作表。 -
设置带有与所摄取数据匹配的标头的工作表。 您可以手动执行此操作,也可以向AEM管理服务中的表单路由发送POST请求。 Admin服务将查看POST正文中的数据,并创建必要的标题/表和工作表,以便摄取数据并充分利用Forms服务。
有关设置工作表的POST请求的格式的详细信息,请参见 管理员API 以及以下示例:
请求:code language-none POST /form/{owner}/{repo}/{ref}/en/email-form.json HTTP/1.1 {"data":{"firstName":"test"}}
响应:
code language-none HTTP/1.1 200 OK {"rowCount":2,"columns":["firstName"]}
您可以使用curl或Postman等工具发出此POST请求。 例如:
code language-none curl -s -i -X POST 'https://admin.hlx.page/form/{owner}/{repo}/{ref}/en/email-form.json' \ --header 'Content-Type: application/json' \ --data '{"data":{"firstName":"test"}}'
通过上述POST请求,我们提供了示例数据,即表单字段和示例值,管理员服务将使用这些示例数据设置表单。
建议使用Admin服务来设置工作表,但是如果要手动创建标头,请参阅文档 手动设置Forms工作表. -
发送
POST
请求管理员服务,您将看到对工作簿的以下更改。-
名为的工作表
helix-default
创建。 此表中的数据是当GET
向工作表发出请求。 这是使用电子表格公式汇总以下各项的数据的好地方:incoming
可供其他地区消费的资产。
注意: 此helix-default
工作表绝不应包含任何个人身份信息或您不可以公开访问的其他数据。 -
名为的工作表
slack
创建。 在此,您可以设置无论何时将数据摄取到电子表格中,都向Slack渠道自动发送通知。 当前,AEM仅支持向AEM工程部Slack组织以及Adobe企业支持组织发送通知。- 要设置Slack通知,请输入
teamId
Slack工作区和channel
名称或ID。 您还可以询问Slack机器人(使用debug
命令)teamId
和channel
标识。 使用channel
最好使用ID而不是名称,因为它在渠道重命名中幸存下来。
注意: 旧表单没有teamId
列。 此teamId
包含在channel
列,以#
或/
. - 输入任意 标题 想要而且位于下 字段 输入要在Slack通知中查看的字段名称。 每个标题应以逗号分隔(例如,
name, email
)。
- 要设置Slack通知,请输入
-
将数据发送到工作表
工作表现在可供数据摄取,您可以发送 POST
直接请求工作表 hlx.page
, hlx.live
或您的生产域。
POST https://ref–repo–owner.hlx.(page|live)/email-form
POST https://my-domain.com/email-form
注意: URL不应包含 .json
扩展。 必须为发布工作表 POST
要处理的操作 .live
或在生产域中。
您可以通过以下几种不同的方式将表单数据格式化 POST
正文。
- 作为名称/值对的数组
https://gist.github.com/dylandepass/9ba6b83700dfce1fa90a47bde62c2e9 - 作为具有键/值对的对象
<script src=“https://gist.github.com/dylandepass/2b5f694723dfdb3d304fcafc613d6595.js”></script> - 作为
x-www-form-urlencoded
正文(content-type
标题必须设置为application/x-www-form-urlencoded
)
<script src=“https://gist.github.com/dylandepass/b72b2e30313bc80beb02e12b1d7201ff.js”></script>
就是这样! 表单服务每分钟运行一次,以便您能够快速看到数据被摄取到工作表中。
作者创建的Forms
在许多情况下,最好由作者创建表单并决定应将哪些表单字段呈现给网站的访客。 通常使用 helix-default
一个电子表格,用于提交表单,作为作者定义表单的位置。
通常,有一个表单块引用电子表格,并呈现表单和处理用户提交流程。
此类的简单示例 form
可以找到块 此处 并且自适应Forms块可用 此处.
当您需要具有reCAPTCHA、辅助功能、文件上传、字段验证、电子签名、性能监控、基于电子表格的规则、记录文档(DoR)等功能的表单时,请使用 🔗 自适应Forms块. 它支持广泛的表单,从收集基本信息的简单表单(如联系人表单或服务请求)到具有多个分区、规则以及与Adobe Sign、Adobe Workfront和外部系统集成的复杂表单。 您甚至可以使用它将数据发送到电子表格或与企业级表单的外部系统连接。 欲知更多详情,请查看 🔗 AEM FormsEdge Delivery Services文档.
请参阅以下示例,了解表单定义的电子表格的外观。
支持的表单字段是可扩展的,并且 form
应该被视为可为您提供起始点的示例。
例如,使用之前列出的代码库,通过在Google文档中添加以下块,向此页面中添加了一个功能齐全的表单:
欢迎您试用并查看表单数据流入的 传入工作表. 从表单服务到电子表格可能需要一分钟。