可通过许多方法在 Survey123 中预填充答案。
默认答案
设计调查时,您可在电子表格的默认列中设置调查问题的默认答案。 这样,您每次开始调查或者问题变为相关时,将使用同一答案预填充调查问题。 对于调查问题的答案大多数时候都相同的情况,此方法尤为有用。 如有必要,您仍然可以编辑默认答案,但是,设置默认答案可让您在完成调查时节省时间。 默认答案可包含诸如字符串和数值等常量。
Select_multiple 问题的答案与其他不同,将按照选择答案时的顺序输入选中的答案,以逗号分隔。 要在 select_multiple 字段中将多个值定义为默认值,请以逗号进行分隔,例如:item1,item2,item3。
地理点、geotrace 和geoshape 问题支持默认答案。 有关设置默认值的详细信息,请参阅地理点以及 Geotrace 和 geoshape。
计算
计算与默认相似,但也会有差异。 仅当打开调查或者问题变得相关时,才会对默认列进行评估,与其不同的是,每次调查中作为计算的输入的答案更改或变得相关时,都会对计算进行评估。 计算可以使用表单中的现有答案。 例如,在问题计算列中输入的表达式 100 - (${integer1} + ${integer2}) 会将问题 integer1 和 integer2 的值相加,并用 100 减去该值,然后将所得的值设置为答案。 用户可以覆盖该值,但是,计算将提供一个初始答案来引导用户。
提示:
如果手动编辑计算的结果,则可以使用随即显示的按钮来擦除经过编辑的值并再次运行计算。
计算模式
在 bind::esri:parameters 列中输入的 calculationMode 参数可以控制何时对问题执行计算(例如 calculationMode=manual)。 支持四个值:
- auto - 在问题为空或用户先前未修改问题时计算。 如果没有提供值,则此为默认的计算行为。
- manual - 仅在按下问题旁边的计算按钮时,问题才会执行计算。
- always - 在计算表达式中引用的任意值更改时计算。 其中包括动态函数,例如 now()。
- whenEmpty - 执行计算直至返回非空值。 返回非空值后,问题的行为方式与 manual 模式相同。 除非按下计算按钮,否则不会重新计算包含动态函数(例如 now())的计算。 如果您不希望在重新加载表单时(例如从收件箱打开时)更新已使用非空值计算的问题,则 whenEmpty 模式十分有用。
以下问题类型支持 calculationMode 参数:
- text
- decimal
- integer
- note
- date
- 时间
- dateTime
- select_one
- select_multiple
- geopoint
- 计算
- hidden
注:
calculationMode 参数在 Survey123 Web 应用程序中不受支持。
设备和用户属性
pulldata("@property") 函数允许您提取有关提交调查响应的设备以及提交这些响应的登录用户的信息。 此函数对于记录技术详细信息和有关调查的背景信息非常有用。
该函数使用格式 pulldata("@property", '<property name>') 返回设备或用户属性。 以下示例将返回设备的 UTC 偏移,从而允许用户记录参与调查的时区:
pulldata("@property", 'utcOffset')
pulldata("@property") 函数可用于检测用户当前使用以下方式与其调查响应进行交互的方式:
pulldata("@property", 'mode')
mode 属性具有三个可能的值:如果用户正在生成新的调查响应(其中包含从现有调查中复制的响应),则返回 new;如果用户正在编辑现有响应,则返回 edit;如果用户正在以只读模式查看现有响应,则返回 view。 如果将其放置在只读列中,则以下示例将检测用户是否正在编辑现有响应,并阻止他们编辑所选问题:
pulldata("@property", 'mode') = 'edit'
pulldata("@property") 函数还可以用于确定已打开调查的位置。 以下示例将确定是否从收件箱中打开了调查:
pulldata("@property", 'status') = 'inbox'
警告:
建议您不要将 mode 或 status 属性的结果存储在隐藏字段或计算字段中,也不要在相关列中使用这些属性来启用或禁用问题。 这样做可能会导致删除这些字段的内容,或者无法按预期更新值。
pulldata("@property") 函数支持以下属性:
属性 | 描述 |
---|---|
pulldata("@property", 'portalUrl') | 将向其提交调查的门户的 URL。 |
pulldata("@property", 'token') | 传递给要素图层的令牌。 |
pulldata("@property", 'portalInfo') | 以 JSON 对象形式存在的所有门户信息。 |
pulldata("@property", 'online') | 布尔值。 如果设备具有网络活动,则为 true,否则为 false。 |
pulldata("@property", 'utcOffset') | 本地时区对照 UTC 的偏移量。 |
pulldata("@property", 'language') | 当前调查中使用的语言。 |
pulldata("@property", 'locale')¹ | 当前调查中使用的区域设置对象。 |
pulldata("@property", 'localeInfo')¹ | 当前调查中使用的 AppStudio LocaleInfo 对象,其中包含各种注记的语言代码。 |
pulldata("@property", 'timeZone') | 时区代码。 |
pulldata("@property", 'username') | 当前登录用户的 ArcGIS 组织账户用户名。 |
pulldata("@property", 'email') | 当前登录用户的 ArcGIS 组织账户电子邮件地址。 |
pulldata("@property", 'userFullName') | 当前登录用户的姓名。 |
pulldata("@property", 'userFirstName')² | 当前登录用户的名字。 |
pulldata("@property", 'userLastName')² | 当前登录用户的姓氏。 |
pulldata("@property", 'deviceId')³ | Survey123 生成的唯一 ID,表示采集调查的特定设备。 它不同于移动设备的国际移动设备识别码 (IMEI),因为运行 Survey123 的设备可能不具有 (IMEI)。 |
pulldata("@property", 'deviceModel')³ | 用户设备的模型名称。 |
pulldata("@property", 'OS')³ | 用户设备的操作系统名称。 |
pulldata("@property", 'appVersion') | 外业应用程序的版本号,或 Web 应用程序的内部版本号。 |
pulldata("@property", 'surveyName') | 调查的名称。 |
pulldata("@property", 'userAgent') | 用户设备的用户代理字符串。 |
pulldata("@property", 'mode') | 如果用户正在创建调查响应,则将返回 new;如果用户正在编辑现有响应,则将返回 edit;如果用户正在以只读模式查看响应,则将返回 view。 |
pulldata("@property", 'status') | 如果分别从草稿、发件箱、已发送或收件箱打开了调查,则将返回 draft、submitted、sent 或 inbox。 如果响应为新响应,则将返回一个空字符串。 |
¹仅限与 pulldata("@javascript") 函数一起使用。
²这些参数具体取决于身份提供者的配置中所存在的内容,并且在使用内置身份验证以外的身份验证的组织中可能不可用。
³仅限 Survey123 外业应用程序。
收藏答案
在 Survey123 在外业应用程序中输入答案,然后发送答案或者将其另存为草稿后,可以通过设置您的收藏答案以供在后续调查中使用。 借助右上角的菜单,您可将调查的当前状态设置为您的收藏答案。
设置收藏答案后,您可以将其插入到新的调查,方法是打开菜单,然后单击从收藏夹中粘贴答案。
无论何时需要更改收藏答案,您都可将其输入至当前调查并单击设置为收藏答案。 如果您在字段中输入重复信息,则可以使用当前答案来预填充后续调查。 用于设置收藏答案的调查将使用星形符号进行标记。
注:
如果已发送文件夹已禁用,则无法使用已发送调查作为收藏的答案。 在这种情况下,将具有收藏答案的调查另存为草稿将允许使用从收藏夹中粘贴答案选项。
CSV 数据
使用已存储在设备中的信息来填充答案可以最大程度地减少完成调查所需的时间。 信息可以是从先前调查中采集的数据,也可以针对用户基于一个问题输入的条目提供多个答案。
预填充答案在资产检查调查中非常有用。 通过输入资产 ID 号(方法是输入 ID 或扫描条形码),可将资产的详细信息从 .csv 文件中调用,并用于回答诸如位置、上次检查日期、上次检查时的条件等问题。
有关如何以这种方式填充答案的其他详细信息,请参阅从 CSV 中检索值。
注:
如果您的 .csv 文件缺少列标题,或者在文件的行末尾具有一个尾随逗号,则无法将 .csv 文件导入到调查中。