高级函数

DISTANCE

DISTANCE 函数用于计算两个定位之间的距离,单位为米。

函数用法

DISTANCE(定位1,定位2)

函数示例:如,在客户拜访场景中计算客户之间的距离,方便合理规划拜访路线,节约时间成本。点击体验效果

GETUSERNAME

GETUSERNAME 函数用于获取当前用户的昵称。

函数用法

GETUSERNAME()

函数示例:如,利用昵称的唯一性,限制每人每天只能填报一条数据。

INDEX

INDEX 函数可用于获取数组中指定位置的值。

函数用法:

INDEX(数组,位置)

其中各参数的含义如下:

  • 数组:可设置为复选框、下拉复选框等字段,或自定义的数组等;
  • 位置:指定数组中第几个值,必须为整数;当该参数为负数时,则返回数组中的倒数第几个值。

函数示例:如设置公式为INDEX(复选框组,指定位置),则当指定位置为 1 时,返回复选框中勾选的第 1 个选项;当指定位置为 -1 时,返回复选框中勾选的倒数第 1 个选项。点击体验效果

MAPX

MAPX 函数是一个“跨表单”函数。即其他所有函数都是在当前表单运算的函数,无法调用当前表单中已经提交的或其他表单中数据;而 MAPX 函数可以在一定程度上弥补这样的不足。

函数用法

MAPX(operation, map_value, map_field, result_field)

其中各参数的含义如下:

  • operation: 聚合操作,必填;
  • map_value: 条件字段值,即检索值,必填;
  • map_field: 条件字段名,即检索范围,必填;
  • result_field:字段返回值,必填。

当指定表单的 map_field 列的值为 map_value 时,返回 result_field 的所有值,然后根据指定的聚合操作 operation 得到对应的返回值。

可以理解为:在检索范围中,找到检索值对应的返回值,并对返回值进行聚合操作。

MAPX("聚合操作",检索值,检索范围,返回值)

注意检索值来自当前表单中(蓝底),检索范围和返回值来自所有表单字段中的同一表单(灰底)。

具体操作步骤如下:

参数限制:

1)聚合操作(operation)

operation 参数(聚合操作)为字符串,可选值如下::

参数值

含义

first

获取返回值的第一个

last

获取返回值的最后一个

max

最大值

min

最小值

avg

平均值

sum

求和

count

获取返回值的个数

2)检索值(map_value)、检索范围(map_field)

支持设置检索值的字段,及其对应支持的检索范围字段如下表所示:

检索值

检索范围

单行文本

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

数字

数字

多行文本

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

日期时间

日期时间、提交时间、更新时间

单选按钮组

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

复选框组

复选框组、下拉复选框(全等)

下拉框

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

下拉复选框

复选框组、下拉复选框(全等)

微信昵称

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

微信 OpenID

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

扩展字段

单行文本、多行文本、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、扩展字段

注:当检索值为日期时间字段时,需要设置为 DATE(检索值),才能检索成功,检索范围直接使用日期时间字段即可;如:MAPX("COUNT",DATE(日期时间),日期时间,单行文本)。

3)返回值(result_field)

以 A 表设置 MAPX 公式,跨表取 B 表数据:MAPX(“聚合操作”,字段1,字段2,“返回值”)为例,根据不同的聚合操作,支持设置返回值的字段如下:

聚合操作

支持的返回值字段

返回值计算方法

first

单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、提交时间、更新时间、扩展字段

字段 1=字段 2时,B 表中第一条入库的数据对应的返回字段值

last

单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、提交时间、更新时间、扩展字段

字段 1=字段 2时,B 表中最后入库的数据对应的返回字段值

max

数字

字段 1=字段 2时,B 表所有数据数字字段的最大值

单行文本、多行文本、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、提交时间、更新时间、扩展字段

字段 1=字段 2时,B 表所有数据按照字符串比较,返回对应字符串最大值

min

数字

字段 1=字段 2时,B 表所有数据数字字段的最小值

单行文本、多行文本、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、微信昵称、微信 OpenID、提交时间、更新时间、扩展字段

字段 1=字段 2时,B 表所有数据按照字符串比较,返回对应字符串最小值

avg

数字

字段 1=字段 2时,B 表所有数据数字字段的平均值

sum

数字

字段 1=字段 2时,B 表所有数据数字字段的求和

count

单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、流水号、地址、定位、微信昵称、微信 OpenID、提交人、提交时间、更新时间、扩展字段

字段 1=字段 2时,B 表录入了多少条匹配的数据

注:

1)检索范围和返回值中的字段不能选择子表单字段

2)检索值不能为成员字段,当需要以成员字段计算时,可以先将成员字段转成文本字段保存编号,然后以文本字段来计算,检索范围字段也是一样的设置。

函数示例:

跨表有两种情况:

1)同 1 张表单,录入数据时调用之前已经提交的数据;

2)2 张表单,A 表录入数据时,调用 B 表已经录入的数据。

应用举例:单条件

有一张选课表,在选择课程时,需要计算出自己是第几个报名的,即计算出某一课程的已报名人数,再+1。

可以看出,此处的检索值为课程,选了哪门课程,就统计这门课程的已报名人数。则公式为:

MAPX("COUNT",课程,课程,姓名)

对“我是第几个报名的”字段进行编辑函数:

MAPX("COUNT",课程,课程,姓名)+1

对于这个例子,可理解为:在之前录入的数据里,寻找「课程」字段选择了“健身”的对应的姓名,并用COUNT 函数统计对应姓名的个数,得到已经报名的人数;最后加 1,得到“我是第几个报名的”。点击体验效果

看一下效果:

  • 选择了健身课,就是在之前录入的课程数据里,查找值为“健身”的,并对选择健身的姓名进行计数,发现前面已经有 3 人报名,自己是第 4 个报名的。
  • 同理,选择了音乐,就是在之前录入的课程数据里,查找值为“音乐”的,并对选择音乐的姓名进行计数,发现前面已经有 1 人报名,自己是第 2 个报名的。
  • 选择了舞蹈,就是在之前录入的课程数据里,查找值为“舞蹈”的,并对选择舞蹈的姓名进行计数,发现前面已经有 2 人报名,自己是第 3 个报名的。

注:当设置字段公式为 MAPX("COUNT",课程,课程,姓名) 时,如返回值为 0,则字段会显示为空值

应用举例:多条件

MAPX 的多条件应用举例参见:MAPX多条件应用

RECNO

RECNO 函数用于累计计算当前表单被新打开的次数,起始值为1。

函数用法

RECNO()

函数示例:如,可结合CONCATENATE 函数添加固定前缀或后缀,对表单查看人数进行计次,用于抽奖、排名等场景中。点击体验效果

CONCATENATE("恭喜您,您是第",RECNO(),"位查看表单的用户!")

TEXTDEPT

TEXTDEPT 函数可以获取部门名称和部门编号。

函数用法

1)获取部门名称:

TEXTDEPT(部门单选字段, "name")

2)获取部门编号:

TEXTDEPT(部门单选字段, "deptno")

函数示例:如,通过 TEXTDEPT 函数获取通讯录中的部门编号,可以对部门编号进行重复值校验以及其他数据联动等。

TEXTDEPT(部门,"deptno")

TEXTLOCATION

TEXTLOCATION 函数用于分别获取定位」和「地址」字段中的完整地址、省、市、区、详细地址;还可以获取定位字段的经纬度信息。

函数用法

TEXTLOCATION(定位/地址字段,text_format)

函数示例:以「江苏省无锡市锡山区安镇街道信达大厦」这个位置为例,获取对应信息的公式如下:

公式

含义

输出结果

TEXTLOCATION(定位/地址字段,“address”)

提取完整地址

江苏省无锡市锡山区安镇街道信达大厦

TEXTLOCATION (定位/地址字段,“province”)

提取省

江苏省

TEXTLOCATION (定位/地址字段,“city”)

提取市

无锡市

TEXTLOCATION(定位/地址字段,“district”)

提取区

锡山区

TEXTLOCATION(定位/地址字段,“detail”)

提取详细地址

安镇街道信达大厦

TEXTLOCATION(定位字段,“lng”)

提取经度

120.31237

TEXTLOCATION(定位字段,“lat”)

提取纬度

32.49099

如获取具体的市:

TEXTLOCATION (定位字段,“city”)

TEXTUSER

TEXTUSER 函数可以获取成员昵称和成员编号。

函数用法

1)获取成员昵称:

TEXTUSER(成员单选字段,"name")

2)获取成员编号:

TEXTUSER(成员单选字段,"username")

函数示例:如,通过 TEXTUSER 函数获取通讯录中的成员编号,可以对成员编号进行重复值校验以及其他数据联动等。

TEXTUSER(提交人,"username")

UUID

UUID 函数可以用于生成随机码,默认的输出格式为 32 位字符串 + 4 个“-”,一共 36 位。

函数用法

UUID()

函数示例:UUID 函数可用于制作随机流水号等。如果需要从 36 位随机码中截取其中一部分,可以结合LEFT 函数一起使用。点击体验效果

LEFT(UUID(),15)

Copyright(C)2023 HFBangFu Inc. All Rights Reserved 皖ICP备12017563号-5