通过 Survey123 网站的报告功能,您可以设计自己的自定义模板并一次生成多个报告。
报告可能包含以下内容:
- 摘要部分
- 单个调查记录
- 单个调查记录和摘要部分
- 多个项调查记录
- 多个调查记录和摘要部分
报告模板为 Microsoft Word 文件 (.docx),该文件可使用特定语法提供占位符文本。 在打印报告时,此占位符文本将替换为调查响应相应字段的内容。 此占位符文本可以与所有格式、表格、图像或者其他自定义内容配合使用,以创建特定于您需求的模板。
要创建模板,请单击地图上方栏中数据选项卡上的报表按钮,然后单击管理模板。 随即显示一个新窗口,您可以下载示例、上传新模板或编辑现有模板的名称和摘要。 单击新建模板上传新的报告模板,并在上传后提供模板的名称和摘要。 或者,您也可以使用下载示例模板链接来下载基于调查的示例模板。
注:
报告模板只能由调查所有者和组织管理员进行上传。
将调查结果共享给所有人、组织或群组时,还会共享与调查关联的报表模板。
表达式
通过提供使用大括号(例如 { 和 })括起来的名称,并以美元符号开头,可以在报表模板中显示问题的响应。 必须使用双引号将表达式中包含的任何字符串值括起来。
下方将显示来自名为 firstname 的文本问题的响应。
${firstname}
除了在报告中显示对问题的响应外,关键字还可用于显示其他有用的信息。 打印报告时,以下内容将显示当前日期和时间:
${$date}
如果结果是一个数组,则可以在大括号中使用 # 作为开始标签,使用 / 作为结束标签以迭代该数组。 以下内容会在单独的行上打印所有图像文件:
${#image1}
${$file}
${/}
您还可以使用表达式来优化响应的显示方式。 表达式可以为单个问题名称或关键字(同上)、涉及一个或多个问题或关键字的计算,或者是带有用于限制响应样式或将样式应用于响应的方法和参数的问题名称或关键字。 表达式将使用以下注记:
${questionname or keyword | method:parameter}
一个表达式可以包含多个方法和参数,或者根本不包含任何方法和参数。 参数可以是其他问题的值,也可以是固定值。
以下表达式将显示名为 floweringtrees 的数字问题除以名为 totaltrees 的数字问题的计算。 当在同一个表达式中引用多个问题时,只需要直接命名单个问题名称,不需要额外的大括号。
${floweringtrees / totaltrees}
以下表达式将显示位置问题的 x 坐标值,其中 getValue 是方法,x 是参数。
${location | getValue:"x"}
如果对 fruitcolor 问题的响应不等于 red,则以下表达式评估为 true。
${if fruitcolor!="red"}The fruit is not red.${/}
可以使用加号连接表达式中的字符串,从而将其串连。 该表达式通过这种串连将名为 field_0 的问题的内容传递至生成服务的 QR 代码,同时创建问题响应的 QR 代码。
${$image | src:"https://barcode.tec-it.com/barcode.ashx?code=QRCode&data="+field_0}
并非所有的问题类型都支持表达式和方法。 下表列出了可与哪种问题类型搭配使用的方法和参数。
方法 | 参数 | Connect 问题类型 | Web 设计器问题类型 | 描述 |
---|---|---|---|---|
getValue | - | 所有问题类型 | 所有问题类型 | 从要素图层中检索原始数据值,或从附件中检索原始图像。 |
getValue | x, y, z, wkid | geopoint | 地图 | 在指定的空间参考中分别检索 x, y, z 坐标。 wkid 参数是可选的,如果省略,该参数将与要素图层的空间参考相同。 |
getValue | length, area, unit, measurement type | geotrace、geoshape | 地图 | 返回折线的长度,或多边形的周长或面积(以给定单位为单位),并且测量是否为平面或测地线。 默认测量类型为测地线。 |
getValue | name, size | image、audio、file | 图像、签名、音频、文件 | 返回附件的文件名或大小。 |
getValue | width, height, x, y, date, time, direction | 图像 | 图像,签名 | 宽度和高度返回图像宽度和高度的整数值(以像素为单位),以及 x、y、日期、时间和方向,返回从图像 EXIF 读取的值(如果存在)。 |
getValue | count | begin repeat、image、audio、file | 重复、图像、签名、音频、文件 | 返回重复或附件的总数。 |
getValue | 位置 | begin repeat、image、audio、file | 重复、图像、签名、音频、文件 | 返回与数组中 1 索引位置相等的整数。 |
getValue | duration | audio、file | 音频、文件 | 返回音频记录的长度(以秒为单位)。 警告:使用 Safari 时,持续时间将不会在 Web 应用程序中采集的响应中返回。 |
appearance | multiline | text | 多行文本 | 用于保留字符串中的换行符。 如果未指定外观,则答案将返回单行字符串。 |
appearance | bullets | select_multiple | 多选 | 以项目符号格式返回答案。 |
checked | 选项名称 | select_one、select_multiple | 多选、单选、单选表格、下拉列表、李克特量表、评分 | 如果字段值等于选项名称,则返回选中的复选框,否则,返回未选中的复选框。 |
selected | 选项名称 | select_one、select_multiple | 多选、单选、单选表格、下拉列表、李克特量表、评分 | 如果存在编码值域,则当字段值等于选项名称时,将返回 true;否则将返回 false。 |
countSelected | - | select_one、select_multiple | 多选、单选、单选表格、下拉列表、李克特量表、评分 | 返回所选的选项的数量。 |
selectedAt | index | select_one、select_multiple | 多选、单选、单选表格、下拉列表、李克特量表、评分 | 返回选项列表中索引位置的字符串。 索引从零开始。 |
locale | language code | date, dateTime, start, end, decimal | 日期、日期和时间、数字 | 返回本地化日期、时间和数字。 |
format | format string | date, dateTime, integer, decimal, start, end | 日期、日期和时间 | 返回格式化日期字符串。 |
utcOffset | offset value | date, dateTime, start, end | 日期、日期和时间 | 返回平移 UTC 偏移值的日期或日期时间值。 |
mapSettings | web 地图项目 ID、地图比例 | geopoint、geotrace、geoshape | 地图 | 在打印地图图像时指定底图和比例尺。 旧版本:替换为 map 和 mapScale。 |
mapExtent | xmin、ymin、xmax、ymax、wkid | geopoint、geotrace、geoshape | 地图 | 打印地图图像时指定固定地图范围。 wkid 参数为可选参数,如果省略,将设置为 4326 (WGS 1984)。 |
地图 | web 地图项目 ID | geopoint、geotrace、geoshape | 地图 | 在打印地图图像时指定底图。 |
mapScale | 地图比例 | geopoint、geotrace、geoshape | 地图 | 在打印地图图像时指定地图比例。 |
mapFilters | web 地图 JSON 中的图层 ID,查询参数 | geopoint、geotrace、geoshape | 地图 | 当打印地图图像时,在 web 地图中指定要素图层的一个或多个过滤器。 |
rotate | degrees | geopoint, geotrace, geoshape, image | 地图、图像 | 指定地图和图像的旋转角度。 |
drawingInfo | currentLayer、要素图层 URL | geopoint、geotrace、geoshape | 地图 | 指定打印地图图像时的绘制信息,包括符号、标注和透明度。 |
src | 图像 URL | - | - | 指定动态图像元素的源 URL。 |
size | width, height, max width, max height | 图像 | 图像 | 指定打印图像的大小。 |
round | places | decimal, geopoint, geoshape, geotrace | 数字 | 将十进制数字四舍五入到指定的小数位。 |
useGrouping | boolean | decimal | 数字 | 如果为 true,则返回带有由区域设置确定的分组分隔符的数字;否则,如果为 false,则不会使用分隔符。 |
toFixed | places | decimal, geopoint, geoshape, geotrace | 数字 | 指定小数分隔符后的固定位数。 如果需要满足固定位数,将填充零。 |
下表列出了所有可以用于表达式的关键字。
关键字 | 描述 |
---|---|
$date | 打印报告时插入当前日期和时间。 默认情况下,它使用当前区域设置格式输出当前日期。 例如:
|
$image | 在报告中插入图像元素。 使用 src 方法指定图像 URL。 示例:
|
$map | 在报告中插入地图元素,而不引用调查问题。 示例:
|
$shape | 在地图上打印当前要素的几何(点、折线或面)。 例如:
|
$attachment | 表示第一个附件或当前要素的所有附件。 例如:
要迭代所有附件,请添加开始和结束标签:
|
$file | 在迭代附件调查问题或要素附件的多个文件时,表示当前文件。 例如:
|
$feature | 表示要素数组中的当前要素。 示例:
|
$layers["<layername>"] 或 $layers[<layerId>] | 在与调查图层相同的要素服务中按名称或 ID 引用任意图层。 例如:
|
在管理模板窗口中,选择快速参考以打开一个页面,该页面包含用于表达式的示例语法,可用于修改在报告中显示的针对调查中每个问题的响应。 要复制此语法,单击复制到剪贴板按钮,然后将其粘贴到模板文档中。 上传模板后,请使用报告面板中的选项生成报告。 有关详细信息,请参阅打印报告。
以下部分将介绍每种问题类型的表达式的常用场景并提供示例。
文本
默认情况下,通过在 Survey123 Web 设计器中添加多行文本问题或在 Survey123 Connect 中使用文本问题的多行外观创建的多行文本问题将忽略回车,并在单个文本块中显示响应。 表达式可用于通过回车显示问题的响应,如下所示:
${multilinetext1 | appearance:"multiline"}
请将此表达式放置在专用行上;否则会发生错误。
数值
基本数学运算符可与数值问题搭配使用,可用于对这些问题的响应进行加、减、乘、除或求模。 以下为示例:
${number1 - 15}
${number1 * 6}
${number1 / number2}
${number1 % number2}
提示:
如果您的表达式包含复杂的数学表达式,请考虑使用方括号以确保报告生成符合您期望的结果。
对于小数问题,round 表达式可用于设置对值进行四舍五入的最大小数位数。 以下示例可将数字 3.141592 四舍五入为四位小数 3.1416:
${decimal1 | round:4}
toFixed 表达式可用于设置对值进行四舍五入的最大小数位数。 以下示例将 3.14 的小数位数固定为 3.140 小数位数:
${decimal1 | toFixed:3}
通过使用占位符字符,可以使用格式表达式以特定方式显示对数值问题的响应。 支持以下占位符字符:
字符 | 描述 |
---|---|
. | 小数分隔符。 |
, | 如果放置在格式中,则需要添加组分隔符,其中组大小由第一个组分隔符占位符与小数点占位符或表达式结尾之间的位数确定。 如果未添加组分隔符,则不会使用任何组分隔符。 |
0 | 必填数字。 如果响应的位数少于所需位数,则将使用零填充。 |
# | 可选数字。 如果响应的位数大于提供的位数,则将对该数值进行四舍五入。 |
提示:
将根据所选区域设置在打印结果中显示小数和千位分隔符。
以下示例将返回最多为三位小数并且具有千位分隔符的响应,必要时进行四舍五入。
${decimal1 | format:"#,##0.###"}
图像和其他附件
对于图像问题,可以设置大小以确保报告具有大小一致的图像。 这些表达式的格式如下:
${image1 | size:width:height:max_width:max_height}
宽度和高度值可以控制以像素为单位测量的图像的设置大小。 虽然表达式需要这些值,但是提供值 0 对图像的该尺寸没有限制。 例如,以下表达式可将图像宽度强制设置为 300 像素,但是会保留图像的纵横比。
${image1 | size:300:0}
最大高度和宽度值可以限制图像的最大大小,并且为可选值。 以下示例将图像宽度强制设置为 300 像素,并将图像高度限制为不超过 200 像素。
${image1 | size:300:0:0:200}
您可以使用 rotate 方法来定义图像的顺时针旋转。 可接受 0 到 360 之间的值。
${image1 | size:300:0:0:200 | rotate:90}
图像问题也可以在调查响应中提取和显示图像详细信息。 这可以用来显示图像的文件名和大小,具体如下:
${image1 | getValue:"name"}
${image1 | getValue:"size"}
${image1 | getValue:"width"}
${image1 | getValue:"height"}
可以使用相同的方法来显示图像中的 EXIF 数据,并显示有关照片的拍摄地点和时间的详细信息,具体如下:
${image1 | getValue:"x"}
${image1 | getValue:"y"}
${image1 | getValue:"date"}
${image1 | getValue:"time"}
${image1 | getValue:"direction"}
要以完整大小和质量显示原始图像,请使用不带任何方法的表达式,或者使用不带任何值的 getValue 表达式:
${image1} 或 ${image1 | getValue:""}
要以完整质量,但是以设置大小显示原始图像,请将 getValue 和 size 表达式配合使用。
${image1 | getValue:"" | size:300:0}
注:
如果在使用任何其他表达式参数时设置图像的大小,则必须将 size 放置在表达式的最后。
日期和时间将以字符串形式存储在 EXIF 数据中,因此不能使用日期和时间问题的 format 表达式对这些值进行格式化。 如果格式化这些值很重要,请考虑使用 pulldata("@exif") 函数以在调查中执行 EXIF 提取操作。 有关详细信息,请参阅图像。
以上 getValue 表达式还可以用于在任何类型的附件中从任何有效属性中提取数据,其中包括图像、音频和文件问题的结果。 可以从所有附件中提取的属性如下所示:
${file1 | getValue:"name"}
${file1 | getValue:"size"}
${file1 | getValue:"globalId"}
${file1 | getValue:"id"}
${file1 | getValue:"contentType"}
${file1 | getValue:"keywords"}
如果该要素的所有附件均为图像,请使用以下占位符,并将每个占位符放置在专用行上:
${#$attachment}
${$file}
${/}
要在响应中返回提交至同一问题的多个图像,请使用图像问题的名称,而非 $attachment:
${#image1}
${$file}
${/}
此方法用于在 ArcGIS Enterprise 10.8.1 之前版本中显示图像或显示在 Survey123 之外添加到要素的图像。 以下示例将显示附加到要素的所有附件的文件名:
${#$attachment}
${$file|getValue:"name"}
${/}
要在线显示图像,请在引用 $image 关键字时提供包含 src 表达式的源 URL,而不是问题名称:
${$image |
src:"https://upload.wikimedia.org/wikipedia/commons/1/13/Esri_Headquarters%2C_Building_Q.jpg"
| size:400:0}
地图
所有使用地图的问题(包括地理点、geotrace 和 geoshape)都具有通用的方法和参数,您可以使用这些方法和参数来修改其在报表中的呈现方式。
默认情况下,报告中的地图将使用为问题设置的 Web 地图。 如果地图比例设置为 0 或忽略该参数,则地图比例取决于地图中的要素,如下所示:
- 如果地图上只有一个点要素,则地图比例与为问题设置的比例相匹配。
- 如果地图上只有一个线要素或面要素,则根据要素的范围确定地图比例。
- 如果地图上有多个要素,则根据所有要素的范围确定比例。
地图问题支持将 web 地图项目 ID 和地图比例设置为可选参数。 在以下示例中,使用的地图比例尺为 1:100,000:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000}
对于所有地图问题,可以使用 rotate 方法来定义正北方向相对于视图的顺时针旋转。 可接受 0 到 360 之间的值。
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | rotate:90}
如果您将 Web 地图项目 ID 保留为空字符串,则将使用问题的默认底图。 如果将地图比例设置为 0 或忽略此参数,则地图将使用为问题设置的默认范围。
mapExtent 方法可用于在报告中显式设置地图范围。 在以下示例中,显示了日本东京的固定地图范围:
${location | mapExtent:139.7:35.6:139.9:35.8:4326}
地图问题还支持适用于图像问题的大小表达式。 可以使用此表达式来控制报表中显示的地图的分辨率,如以下示例所示:
${location | size:400:400}
可以将 map、mapScale 和 size 表达式配合使用,以提供 web 地图 ID 和地图比例以及地图图像分辨率,如以下示例所示:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}
注:
如果在使用任何其他表达式方法时设置地图的大小,则必须将 size 放置在表达式的最后。
如果地图包含大量记录,则可以使用 mapFilters 方法来限制显示的记录。 在以下示例中,where 参数用于过滤仅具有一个图层的 web 地图以显示 POP2000 大于 999999 的记录:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"where=POP2000>999999"}
在以下 mapFilters 示例中,第一个参数用于过滤 Cities 图层(其图层 id 为 18ece64a1fc-layer-5)以仅显示位于加利福尼亚州的人口最多的前 3 条记录。 第二个参数与第一个参数以冒号分隔,用于过滤 States 图层(其图层 id 为 18ece64a1fc-layer-6)以仅显示加利福尼亚州:
${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"'18ece64a1fc-layer-5':where=ST='CA'&orderByFields=POP2000 ASC&resultRecordCount=3":"'18ece64a1fc-layer-6':where=stateName='California'"}
注:
图层 id 是 web 地图 JSON 的要素图层对象的属性。
默认情况下,地图问题将使用默认地图符号进行显示,不考虑要素图层中设置的符号系统。 可以使用 drawingInfo 方法来提取和使用存储在特定要素图层中的绘制信息,包括所使用的符号、标注和透明度。 可以通过提供的 URL,在当前图层或特定要素图层中指定此信息。
${location | drawingInfo:"currentLayer"}
${location | drawingInfo:"https://.../FeatureServer/0"}
如果您的调查不包含地图问题,或如果您希望在没有关联调查的情况下为要素图层创建报告,则仍可以使用 ${$shape} 占位符返回记录的几何。
在摘要部分中,地图问题的表达式会在您的问题输入中显示多个几何。 如果您想在单个报告中包含其他响应,请提供包含 !important 标记的 where 表达式。 有关详细信息,请参阅其他语法。 以下表达式将显示图层中状态字段值等于 'broken' 的所有几何:
${location | where:"status='broken' !important" | map:"<itemID>" | size:400:300}
注:
在上述示例中,忽略了地图比例。 如果将地图比例设置为 0 或忽略该参数,并且地图包含多个记录,地图将对所有记录使用组合范围。
您可以将 where 表达式设置为始终为 true 的语句,以确保显示图层中的每个几何:
${location | where:"1=1 !important"}
这也可以用于显示重复内容中的所有点:
${repeat1.repeatLocation | where:"inspectionId=123 !important" | size:400:300}
$shape 关键字还可用于返回多个地图几何。
${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300}
$map 关键字可用于打印未引用调查问题的地图。
${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}
地理点
对于地理点问题,可以使用表达式来显示问题中的纬度或经度值,具体如下:
${location | getValue:"x"}
${location | getValue:"y"}
无法使用一个表达式来显示两个值;如果需要两个值,则必须使用两个表达式。
提示:
仅当基础要素图层支持 z 值时,才能通过类似表达式来显示高度值:
${location | getValue:"z"}
默认情况下,纬度、经度和高度值将返回调查响应中提供的原始值,不会进行截断。 由于这些值通常比报表中需要的值长得多,请考虑使用 round 或 toFixed 表达式将值四舍五入到特定的小数位。
${location | getValue:"x" | round:3}
${location | getValue:"x" | toFixed:3}
默认情况下,这些值为调查的要素图层所使用的相同空间参考的输出。 可以通过提供其 WKID 将不同的空间参考设置为附加参数:
${location | getValue:"x":4326}
Geotrace 和 geoshape
对于 geotrace 和 geoshape 问题,可以使用 getValue 表达式分别显示线的长度或面的周长:
${polyline1 | getValue:"length":"meters":"planar"}
对于 geoshape 问题,您还可以使用 getValue 表达式来显示面的面积:
${polygon1 | getValue:"area":"hectares":"geodesic"}
单位和计算方法为可选参数。 对于长度,将接受以下单位:
- feet
- kilometers
- meters
- miles
- nautical-miles
- yards
对于面积,将接受以下单位:
- acres
- hectares
- square-miles
- square-kilometers
- square-meters
- square-feet
- square-yards
或者,可以使用 ArcGIS REST API 支持的任何 esriSRUnitType 常量或 esriSRUnit2Type 常量。 在表达式中,对于没有引号的常量,请使用数值代码,如下所示:
${polyline1 | getValue:"length":109002:"geodesic"}
如果未指定单位,则长度的默认值将为 kilometers,面积的默认值将为 square-kilometers。
方法可以为 geodesic 或 planar。 如果未指定方法,则默认使用 geodesic。
日期、时间和日期时间
为确保日期和日期时间问题以适用于您所在区域格式的精确方式显示,可以使用表达式对问题进行格式设置以匹配提供的区域。 请先将 locale 方法放置在表达式中,并且区域代码必须小写。
${datetime | locale:"pt-br"}
注:
有关特定语言区域设置代码的信息,请参阅“维基百科”的 ISO 639-1 代码列表。 但请谨记,Survey123 并非支持上述所有语言。
要素图层中的所有日期和日期时间值均存储在协调世界时间 (UTC) 中。 默认情况下,报告中返回的所有日期和日期时间值均位于请求生成报告的 Web 浏览器所在的时区。 可以使用 utcOffset 方法来更改报表中这些值的显示,以匹配特定时区。 下面的表达式显示对相对于 UTC 偏移 +1 小时的日期时间问题的响应:
${datetime | utcOffset:"+01:00"}
utcOffset 方法支持格式 +01:00、+0100 和 +01,并将返回相同的结果。 您还可以使用此方法来更改响应提交时间的显示。 请注意,utcOffset 不能与时间问题搭配使用。
对于日期和日期时间问题,可以使用表达式来设置日期的格式,方法为:针对日、月和年分别使用 DD、MM 和 YYYY 占位符。 以下表达式仅显示日和月,忽略年:
${date | format:"DD/MM"}
您还可以在日期时间问题中设置时间的格式,方法是为小时、分钟和秒分别使用 HH、mm 和 ss 作为占位符。 以下表达式可显示日、月、小时和分钟:
${datetime | format:"DD/MM HH:mm"}
通过将 format 方法的值留空,可以使用 YYYY-MM-DDTHH:mm:ss±HH:mm 的 ISO 8601 格式显示日期和时间,如下例所示:
${datetime | format:""}
有关日期和时间格式的详细信息,请参阅下表。
注:
必须将 format 方法放置在表达式的末尾。
您可以使用 $date 关键字打印生成报告的日期和时间。 使用 format 方法控制是否打印日期、时间或两者。 以下语法可以使用区域设置的默认日期格式打印生成报告的日期(无时间):
${$date}
对于生成报告的日期和时间,以下表达式可打印其月份、日期、年份、小时和分钟:
${$date | format:"MM/DD/YYYY HH:mm"}
以下表达式可以使用 12 小时制的时、分和秒打印报告生成时间(无日期):
${$date | format:"h:mm:ss A"}
$date 关键字还支持 utcOffset 和 locale 方法。 如果同时指定了 format 和 locale,会忽略 locale 方法。
日期和时间格式
下表列出了最常见的占位符,这些占位符可以与 format 方法配合使用以设置报告中日期和时间的格式:
占位符 | 描述 |
---|---|
YY | 年份的后两位数。 示例:2023 将以 23 的形式表示。 |
YYYY | 四位数年份。 示例:2023 将以 2023 的形式表示。 |
M | 介于 1 和 12 之间的月份数。 示例:一月将以 1 的形式表示。 |
MM | 两位数月份数。 示例:一月将以 01 的形式表示。 |
MMM | 采用三个字母形式的月份。 例如:一月将以 Jan 的形式表示。 |
MMMM | 以全名写入的月份。 示例:一月将以 January 的形式表示。 |
D | 介于 1 和 31 之间的日期数。 示例:每月的第一天将以 1 的形式表示。 |
DD | 两位数日期数。 示例:每月的第一天将以 01 的形式显示。 |
Do | 包含序数后缀的日期数。 示例:每月的第一天将以 1st 的形式表示。 |
H | 24 小时制小时数。 示例:下午 11 点将以 23 的形式表示。 |
HH | 24 小时制两位数小时数。 示例:上午 2 点将以 02 的形式表示。 |
h | 12 小时制小时数。 示例:下午 11 点将以 11 的形式表示。 |
hh | 12 小时制两位数小时数。 示例:上午 2 点将以 02 的形式表示。 |
m | 介于 0 和 59 之间的分钟数。 示例:8 分钟将以 8 的形式表示。 |
mm | 两位数分钟数。 示例:8 分钟将以 08 的形式表示。 |
ss | 两位数的秒数。 示例:9 秒会表示为 09。 |
Z | 采用小时的形式并使用分隔符的时区偏移。 示例:-07:00, +13:00 |
ZZ | 采用小时的形式但不使用分隔符的时区偏移。 示例:-0700, +1300 |
x | Unix 毫秒时间戳。 示例:2023 年 5 月 4 日下午 9 点 (GMT) 将表示为 1683234000000。 |
X | Unix 时间戳。 示例:2023 年 5 月 4 日下午 9 点 (GMT) 将表示为 1683234000。 |
a | 小写上午或下午表示法。 示例:上午将以 am 的形式表示,下午将以 pm 的形式表示。 |
A | 大写上午或下午表示法。 示例:上午将以 AM 的形式表示,下午将以 PM 的形式表示。 |
多项选择
如果单选问题在占位符中由自身引用(例如 ${select_one}),则其将返回选择标注。 如果在表达式中使用了单选问题,或者该问题使用了外部选择,则单项选择问题将返回选项的名称。 以下示例将针对条件语句使用选项名称,而非标注:
${if select_one=="choice1Name"}The user selected the first choice.${/}
要有意显示选项名称,而非标注,请使用 getValue 表达式:
${select_one | getValue:""}
对于单项选择和多项选择问题,可以使用表达式在选择项旁边放置复选框,根据问题的响应进行相应填充。 必须使用选项名称,而非选项标注。 以下表达式将显示所选水果:
${select_one | checked:"apple"} Apple
${select_one | checked:"pear"} Pear
当为单项选择或多项选择问题启用允许“其他”时,请使用 other 的选项名称:
${select_one | checked:"other"} Other fruits you like: ${favFruits_other}
多项选择问题可以支持表达式输出所选选项的总数,并输出所选的特定选项:
${select_multiple | countSelected}
${choiceQuestion1 | selectedAt:2}
注:
selectedAt 表达式从零开始计算所选选项。 这意味着 ${choiceQuestion1 | selectedAt:2} 将返回所选的第三个选项。
多项选择问题还具有支持的表达式,可以返回所有所选选项作为符号列表,具体如下:
${select_multiple | appearance:"bullets"}
注:
如果选项项目的标注包含双引号,则其必须以反斜杠开头;否则,您的报告将无法打印。 单引号不需要反斜杠。 以下为示例:
${select_one | checked:"Service provided by \"Greg's Plumbing\""} Service provided by "Greg's Plumbing"
重复
要访问重复中的问题,请在模板中添加重复部分。 对于名为 defects 的重复,${#defects} 占位符表示重复部分的开始,而 ${/} 表示结束。 指向重复中问题的占位符必须位于重复部分的开始与结束占位符之间。
注:
要打印表格中的重复内容,请确保开始标签和结束标签均位于表格内部或表格外部。 如果其中一个标签位于表格内部,而另一个标签位于表格外部,则无法生成报告。 在大多数情况下,如果将开始标签和结束标签放置在表格内,则开始标签应位于第一个单元格中,而结束标签应位于最后一个单元格中。
要访问嵌套重复中的问题,请将问题的标签放在目标重复部分上方每个重复图层的标签之间。 以下为示例:
${#repeat1}
${#repeat2}
${#repeat3}
${field1InRepeat3}, ${repeat2.field1}, ${repeat1.field1}, ${mainLayer.field1}
${/}
${/}
${/}
在使用 ${layername} 语法引用图层名称时,报告表达式无法读取特殊字符,例如连字符。 如果所引用图层的名称中包含特殊字符,请使用下划线来代替这些特殊字符。 或者,可以通过 $layers 关键字以及图层名称或图层 ID(例如 ${$layers["my layer name"]} 或 ${$layers[0]})来引用图层。 这对于重复的图层名称非常有用。
要引用与其父重复具有相同名称的重复中的字段,请使用完整路径语法,其中包括字段名称和重复名称,例如 ${sharedName.sharedName}。
要显示重复记录的索引,请使用带有保留关键字 $feature 的表达式 getValue。 此示例将为重复的第一条记录生成 1,为第二条记录生成 2,依此类推:
${#defects}
${$feature | getValue: "position"}
${/}
报告查询
可以使用聚合函数来生成对打印响应中的值的查询。 这些查询非常适用于摘要部分,无论打印多少响应,其在报告中仅会显示一次。 有关详细信息,请参阅报告查询。
要将报告打印限制为指定重复次数,而非与响应相关的每个重复,请使用 resultRecordCount 方法来设置要打印的特定重复次数:
${#defects | resultRecordCount:20}...${/}
可以使用 orderByFields 方法来确定重复打印的顺序。 声明一个字段名称,后跟 ASC 或 DESC,系统将根据该字段的输入以升序或降序分别打印重复项:
${#defects | orderByFields:"state_name ASC, pop2000 DESC"}...${/}
条件报告元素
可以使用 if 语句有条件地显示或隐藏报告中的各项元素。 可以通过在起始 ${if expression} 占位符中键入表达式来使用 if 语句,其中 ${/} 表示条件部分的结尾。 以下是一些可用于显示或隐藏部分报告的 if 语句示例:
- 只有回答 photo1 问题,${if photo1} 才会显示该部分。
- 只有当 integer1 问题的答案为正数时,${if integer1>0} 才会显示该部分。
- 只有当地理点位于北半球时,${if ((geopoint1 | getValue:"y")>0)} 才会显示该部分。
- 只有当多项选择问题已选择“A”选项时,${if multiple_choice1 | selected:"A"} 才会显示该部分。
- 仅当 repeat1 包含三个或更多记录时, ${if (repeat1 | getValue:"count")>=3} 才显示该部分。
在以下示例中,仅在优先级单选问题中选择 high 时,第二行中的文本才会显示在报告中:
${if priority | selected:"high"}
High priority issues must be addressed within seven days.
${/}
要检查响应是否包含问题的值,只能使用 if 语句直接引用字段名称,而不使用其他运算符,例如 ${if photo1}。 这种格式将确保将空字符串、空值和未定义值都视为空值。 此格式适用于字符串、数字、日期和附件字段类型。 当此格式与重复搭配使用时,只要重复中至少有一个实例,就会显示该部分。
要将条件语句与日期和时间问题一起使用,请使用新纪元时间(自 1970 年 1 月 1 日起经过的毫秒数)执行计算。 例如,仅当日期字段中的值早于 2020 年 10 月 14 日时,${if (date1|getValue:"") < 1602735375000} 才会显示该部分。 请注意,报告语法与 XLSForm today() 或 now() 函数不等效,因此无法针对相对于报告打印时间的时间来编写条件语句。
if 语句支持以下逻辑运算符:
运算符 | 描述 |
---|---|
|| | 如果两个语句中有一个返回 true,则返回 true |
&& | 如果两个给定语句均返回 true,则返回 true |
! | 如果语句非 true,则返回 true |
== | 如果两个给定值相等,则返回 true |
!= | 如果两个给定值不相等,则返回 true |
> | 评估第一个值是否大于第二个值 |
>= | 评估第一个值是否大于或等于第二个值 |
< | 评估第一个值是否小于第二个值 |
<= | 评估第一个值是否小于或等于第二个值 |
局限性
使用报告模板时,存在以下限制:
- 在 Survey123 网站中应用于重复的过滤器不会应用于报告中。 只能使用表达式在报告中过滤重复。
- 如果地图使用的是 2014 年 7 月发布的 2.0 版本之前的 web 地图版本,则您的地图将不会显示在您的报告中。
- 如果您的 ArcGIS Enterprise 门户没有有效的 SSL 证书,则您的地图不会显示在您的报告中。
- 使用报告模板打印不可与未面向公众部署的 ArcGIS Enterprise 配合使用。 尝试执行此操作将显示 getaddrinfo ENOTFOUND 错误。
- 使用报告模板进行打印不适用于使用集成 Windows 身份验证 (IWA) 的 ArcGIS Enterprise 部署。
- 每个报告请求最多可包含 2000 条记录。
- 当 Survey123 网站安装在您的基础架构上时,无法使用报告 API。 仅当使用 https://survey123.arcgis.com/ 时,才可以生成报告。