飞书智能伙伴Aily之ByteFx公式帮助文档

飞书智能伙伴Aily之ByteFx公式帮助文档

智能伙伴Aily手册精选NaN-NaN-NaN
产品功能
概述
飞书应用引擎在公式字段、表单默认值、筛选组件、输入组件中均提供公式,可基于系统变量或其他组件属性返回的数据,自动计算字段值,无需人工计算和手动填写。灵活应用公式,可以保证数据准确性,提升效率,例如:
  • 填写完出生日期后,自动计算年龄
  • 编辑完成单价和数量后,自动计算总价
公式定义
公式即Y=F(x),通常由函数(Function)、字段(Field)、运算符(Operator)和常量(Constant)组成。
通过函数和输入参数构造出来的表达式返回计算结果,结果值类型可以是场景所需的任意元数据字段类型。
250px|700px|reset
公式支持的字段类型
文本类型
文本类型字段,常用于名称、描述等。公式中可使用 Equals 等函数检查文本字段内容,也可使用 & /+实现拼接文本,支持通过\转义,通过\n换行。
示例 1:检查字段值
部门名称.Equals("销售部")
示例 2:拼接文本
姓名 + " - " + 部门.名称 = 姓名 - 部门名称
"Bob says \"Hello\" to Alice"
"Line 1: Hello\nLine2: World"
文本内插入公式
字符串内可以包含子公式,形式{{bytefx}},会先计算获得子公式的值后,插入到string中对应位置。如需要原样输出{{}}时,加\进行转义。
示例1:
"{{1+2}}" -> "3"
"{1+2}" -> "{1+2}"
示例2:如需输出双花括号,要转义:
  • 可2个都转义
"\{\{1+2\}\}" -> "{{1+2}}"
  • 也可转义1个
"\{{1+2}\}" -> "{{1+2}}"
多语类型
多语类型字段。根据用户语言设置,展示对应的语言,常用于姓名、名称等。公式中可使用「+」实现多语字段拼接其他文本
示例 :拼接文本
"欢迎" + 姓名
数字类型
数字类型字段。支持设置百分号、小数位,常用于数量、价格等。公式中支持数字字段 + - * / > < = 等算术运算。包括:
  • 整数Integer,不超过 18 位的整数。例如:0、42、-85
  • 浮点数Float,用于各类数值字段。例如:0.65、-9.0e+3、4.2e-13
  • 定点数Bigfloat,高精度数字,用户可输入整数不超过 18 位、小数不超过 9 位的数字。例如:123.34。一期仅支持运算符,不支持作为函数入参。
示例:算术运算
价格 + 10
数量 - 5
价格*数量
总价 / 数量
查找类型
查找类型字段。在公式中,可以使用点运算符「.」调用查找字段关联的对象数据,目前最多可支持五级调用
示例 1:支持「.」调用关联对象数据
部门.部门负责人
示例 2:最多可支持五级调用
部门.上级部门.上级部门.部门负责人.姓名
日期类型
日期类型字段。在公式中,可以支持计算两个日期间相差的天数,也可以直接使用「+」、「-」运算符计算日期间相差的天数
示例 1:计算日期间相差天数
Today() - 出生日期
示例 2:为指定日期时间加 / 减天数
截止日期 + 1
日期时间类型
日期时间类型字段。支持功能与日期类型相同,需要注意的是,日期时间字段暂不支持与日期字段进行运算,需转化为日期格式后,才可以和日期字段进行运算
示例 1:获取日期时间字段的年份
开始时间.Year()
示例 2:日期时间字段值转化为日期格式
Datetime(开始时间.Year(),开始时间.Month(),开始时间.Day())
示例 3:计算日期时间相差的天数。注:日期时间相减返回的是单位为「天」的数字
Now() - 开始时间
自动编号类型
自动编码类型字段。在公式中使用时,使用规则同文本
示例:拼接文本
"编号为:" + 订单编号 -> 编号为:00001
布尔类型
布尔类型字段。只有 true 或 false 两种值
示例:使用布尔字段进行判断
If(是否启用, "正在使用中", "已停用")
选项类型
选项类型字段。可通过 Equals、NotEquals、Isanyof、Hasanyof 函数来判断选项内容
示例:判断选项字段内容
员工类型.Equals(全职)
手机号码类型
手机号码类型字段,公式中使用时,使用规则同文本
示例:判断手机号码是否存在
If(手机号码.Isnotblank(),手机号码,"")
邮箱类型
邮箱类型字段,公式中使用时,使用规则同文本
示例:判断邮箱是否为空
If(邮箱.Isnotblank(),邮箱,"")
组合类型
组合类型字段,公式中使用时,需使用「.」运算符来选择需使用的组成字段,使用规则同所选字段的类型
示例:输出最高学历的学校名称
最高学历.学校
公式支持的运算符
逻辑运算符
与或非,操作数必须为Bool
&& / And(且)
逻辑运算符:且,在公式中使用 && 或 And 调用
示例:判断是否同时满足条件
If((数学成绩>90) && (体育成绩>90), "优秀", "继续努力" )
|| / Or(或)
逻辑运算符:或,在公式中使用 || 或 Or 调用
示例:满足任一条件
If(重要程度.Equals(高) || 预计完成日期 = Today(), "紧急", "不紧急" )
! / Not(非)
逻辑运算符:非,在公式中使用 ! 或 Not 调用
示例:取相反值
If(!员工类型.Equals(正式),"无需转正","待转正")
.(点)
点运算符,支持字段、函数使用「.」实现下钻调用
示例 1:字段使用「.」
员工类型.Equals(正式)
示例 2:函数使用「.」
Today().Year()
算术运算符
四则运算:加减乘除
适用Bool、Integer、Float,自动类型转换原则:
From/To
Bool
Integer
Float
Decimal
Bool
Y
N
N
N
Integer
N
Y
Y
Y
Float
N
N
Y
Y
Decimal
N
Y
Y
Y
+(加)
加运算符,支持数字、日期、时间的加法运算,和拼接文本
示例 1:加法运算
价格 + 10
Today() + 1
示例 2:拼接文本
姓名 + " - " + 部门.名称 = 姓名 - 部门名称
-(减)
减运算符,支持数字的减法运算
示例:基础减法运算
数量 - 10
*(乘)
乘法运算符,支持数字间乘法运算
示例:乘法运算
价格 * 数量
/(除)
除法运算符,实现数字间除法运算
示例:除法运算
总价 / 数量
比较运算符
==(等于)
等于,支持文本、数字、日期、时间等类型的比较。List/Map/Set/JSON的比较请使用 Equals 函数
示例:判断是否相等
截止日期 == Today()
!=(不等于)
不等于,支持文本、数字、日期、时间等类型的比较。List/Map/Set/JSON的比较请使用 NotEquals 函数
示例:判断是否不等
截止日期 != Today()
>(大于)
大于,仅支持数字、日期、时间的比较
示例:未到期
截止日期 > Today()
>=(大于等于)
大于等于,仅支持数字、日期、时间的比较
示例:判断截止日期是否属于 2023 年或之后
截止日期 >= DateTime(2023,1,1)
<(小于)
小于,仅支持数字、日期、时间的比较
示例:已过期
截止日期 < Today()
<=(小于等于)
小于等于,仅支持数字、日期、时间的比较。
示例:判断截止日期是否在 2023 年以前
截止日期 <= DateTime(2020,12,31)
^(幂)
幂运算符,计算底数的指数幂
示例:2^3 → 8
%(取模)
取模运算符,将两数相除后取余数
示例:7 % 3 → 1
公式支持的函数
  • 函数分为日期函数、逻辑函数、数学函数、集合函数、文本函数。
  • 公式通常上支持链式调用,但是以下几种情况例外:
  • 数字字面量不支持进行链式调用
日期函数
AddDays
函数语法
AddDays(日期/日期时间,数字)
日期/日期时间.AddDays(数字)
函数说明
为指定日期/日期时间加 / 减一定天数。
示例
// 为指定日期时间加4天
AddDays(DateTime(2023,3,24,1,53,4), 4) → 2023-03-28 01:53:04
// 获取到期日期
AddDays(生产日期,保质期(日))
AddHours
函数语法
AddHours(日期/日期时间,数字)
日期/日期时间.AddHours(数字)
函数说明
为指定日期/日期时间加 / 减一定小时。
示例
// 为指定日期时间加4小时
AddHours(DateTime(2023,3,24,1,53,4), 4) → 2023-03-24 05:53:04
// 当前时间两小时后。
AddHours(Now(),2)
AddMinutes
函数语法
示例
AddMinutes(日期/日期时间,数字)
日期/日期时间.AddMinutes(数字)
函数说明
为指定日期/日期时间加 / 减一定分钟。
示例
// 为指定日期时间加4分钟
AddMinutes(DateTime(2023,3,24,1,53,4), 4) → 2023-03-24 01:57:04
// 当前时间 30 分钟前。
AddMinutes(Now(),-30)
AddMonths
函数语法
AddMonths(日期/日期时间,数字)
日期/日期时间.AddMonths(数字)
函数说明
为指定日期/日期时间加 / 减一定月数。
示例
// 为指定日期时间加4个月
AddMonths(DateTime(2023,3,24,1,53,4), 4) → 2023-07-24 01:53:04
// 获取转正日期。
AddMonths(入职日期,试用期(月))
AddYears
函数语法
AddYears(日期/日期时间,数字)
日期/日期时间.AddYears(数字)
函数说明
为指定日期/日期时间加 / 减一定年数。
示例
// 为指定日期时间加4年。
AddYears(DateTime(2023,3,24,1,53,4), 4) → 2027-03-24 01:53:04
// 获取去年今日。
AddYears(Today(),-1)
Date
函数语法
Date(年,月,日)
函数说明
新建 1 个指定年、月、日的日期。
示例
// 返回日期
Date(2022,12,05) → 2022-12-05
DateTime
函数语法
DateTime(年,月,日[,时,分,秒])
函数说明
新建 1 个指定年、月、日、时、分、秒、毫秒的日期时间。
示例
// 新建完整日期+时间
DateTime(2022,12,5,2,35,57) → 2022-12-05 02:35:57
// 新建日期
DateTime(2022,12,05) → 2022-12-05 00:00:00
DateDiff
函数语法
起始日期.DateDiff(结束日期, 单位)
DateDiff(起始日期, 结束日期, 单位)
函数说明
计算两个日期之间的天数、月数或年数。「单位」的有效值包括:“Years”(年数)、“Months”(月数)、“Days”(天数)、“Hours”(小时数)、“Minutes”(分钟数)、“Seconds”(秒数)。
示例
// 计算两个日期间的年数。
DateDiff(DateTime(2027,3,28,1,53,4), DateTime(2023,3,24,1,53,4), Years) → -4
// 计算两个日期间的月数。
DateDiff(DateTime(2001,01,30),DateTime(2020,03,17),Months) → 229
// 计算两个日期间的天数
DateDiff(DateTime(2001,01,30),DateTime(2020,03,17),Days) → 6986
//计算两个日期时间的分钟数
DateDiff(DateTime(2023,3,28,1,58,4), DateTime(2023,3,24,1,53,4), Minutes) → -5765
Day
函数语法
Day(日期/日期时间)
日期/日期时间.Day()
函数说明
以数字格式返回某日期是当月第几天,天数是介于 1 到 31 之间的整数。
示例
//返回指定日期时间是当月第几天
Day(DateTime(2023,3,24,1,53,4)) → 24
// 返回今天是当月第几日
Today().Day()
Days
函数语法
Days(结束日期,开始日期)
结束日期.Days(开始日期)
函数说明
计算两个日期之间的天数,不足一天时,按 0 计算。
函数示例
计算两个日期间的天数。
Days(DateTime(2021,11,20),DateTime(2021,11,17)) → 3
Hour
函数语法
Hour(日期时间)
日期时间.Hour()
函数说明
以数字格式返回指定日期时间的小时值。
示例
//返回指定日期时间的小时
Hour(DateTime(2023,3,24,1,53,4)) → 1
// 返回当前日期时间的小时。
Hour(Now())
IsoWeekDay
函数语法
IsoWeekday(日期/日期时间)
日期/日期时间.IsoWeekday()
函数说明
返回一个数字,表示给定日期在当年的 ISO 系统中的对应星期几,其中星期一是 1
函数示例
计算指定日期在ISO系统是星期几。
IsoWeekday(DateTime(2022,04,25)) → 1
IsoWeekNum
函数语法
IsoWeekNum(日期/日期时间)
日期/日期时间.IsoWeekNum()
函数说明
返回一个数字,表示给定日期在当年的 ISO系统中的对应第几周
函数示例
// 计算当前日期是当年ISO系统第几周。
IsoWeekNum(DateTime(2022,04,24))→ 16
Minute
函数语法
日期时间.Minute()
Minute(日期时间)
函数说明
以数字格式返回指定日期时间的分钟部分。
示例
//返回指定日期时间的分钟部分。
Minute(DateTime(2023,3,24,1,53,4)) → 53
// 返回当前日期时间的分钟。
Minute(Now())
Month
函数语法
Month(日期/日期时间)
日期/日期时间.Month()
函数说明
以数字格式返回指定日期时间的月份。
示例
//返回指定日期时间的月份
Month(DateTime(2023,3,24,1,53,4)) → 3
// 获取当前月份。
Today().Month()
MonthName
函数语法
日期/日期时间.MontName()
MonthName(日期/日期时间)
函数说明
获取指定日期时间所在月份的名称。
示例
//获取指定日期时间的所在月份的名称。
MonthName(DateTime(2023,3,24,1,53,4)) → "三月"
DateTime(2023,1,1).MontName() → “一月”
NetWorkdays
函数语法
NetWorkdays(起始日期, 结束日期, [节假日])
起始日期.NetWorkdays(结束日期, [节假日])
函数说明
返回所提供的两个日期之间的工作日天数,工作日不包括周末和指定的节假日
函数示例
// 返回两个日期之间的工作日天数。
NetWorkdays(DateTime(2021,11,12), DateTime(2021,11,16)) → 3
//返回两个日期之间刨掉节假日后的工作日天数。
NetWorkdays(Date(2021,11,12),Date(2021,11,16),List(Date(2021,11,12), Date(2021,11,15))) → 1
Now
函数语法
Now()
函数说明
获取当前日期时间。
示例
// 获取当前时间。
Now() → 2023-01-01 00:00:00
Second
函数语法
日期时间.Second()
Second(日期时间)
函数说明
以数字格式返回指定日期时间的秒钟部分。
示例
// 返回指定日期时间的秒钟
Second(DateTime(2023,3,24,1,53,4)) → 4
// 返回当前日期时间的秒钟。
Second(Now())
Today
函数语法
Today()
函数说明
获取当前日期。
函数示例
// 计算年龄。
(Today()-出生日期)/365
// 返回今天的日期。
Today()
WeekDay
函数语法
WeekDay(日期/日期时间, [类型])
日期/日期时间.WeekDay([类型])
函数说明
以数字格式返回指定日期时间当周的第几天。
示例
类型表示一周的第 1 天从星期几开始,类型=1 表示该周的第 1 天从星期天开始,类型= 2 表示从星期一开始。类型可选,默认为 1。
// 返回指定日期时间是星期几
WeekDay(DateTime(2023,3,24,1,53,4)) → 6
// 返回 2022-04-25 在星期几
WeekDay(DateTime(2022,04,25),2) → 1
WeekName
函数语法
WeekName(日期/日期时间)
日期/日期时间.WeekName()
函数说明
以文本格式返回指定日期时间为星期几。
示例
// 返回 2023 年 3 月 24 日为星期几。
WeekName(DateTime(2023,3,24,1,53,4)) → 星期五
Weeknum
函数语法
Weeknum(日期/日期时间, [类型])
日期/日期时间.Weeknum([类型])
函数说明
返回一个数字,表示给定日期在当年的第几周,包含 1 月 1 日的周为该年的第一周。
函数示例
类型选填,若为 1,代表每周从星期日开始,当年1月1日所在的周为第一周;若为 2,代表每周从星期一开始,当年1月1日所在的周为第一周;若为3,代表每周从星期一开始,当年第一个星期四所在的周为第一周;不填默认为 1。
// 返回 2022-04-24 在当年的第几周
Weeknum(DateTime(2022,04,24)) → 18
Weeknum(DateTime(2022,04,24),2) → 17
Workday
函数语法
Workday (起始日期, 工作日天数, [节假日])
起始日期.Workday (工作日天数, [节假日])
函数说明
指定工作日天数,计算结束日期,工作日不包括周末和指定的节假日。工作日天数不足 1 天时,按 1 天计算
函数示例
// 计算指定日期开始往后推3个工作日的结束日期。
Workday(DateTime(2022,04,22),3) → 2022-04-27
//计算指定日期开始往后推3个工作日,且跳过指定节假日的结束日期。
Workday(DateTime(2022,04,22),3,List("2022-04-25")) → 2022-04-28
Year
函数语法
Year(日期/日期时间)
日期/日期时间.Year()
函数说明
获取指定日期/日期时间的年份。
示例
// 获取指定日期时间的年份。
Year(DateTime(2023,3,24,1,53,4)) → 2023
// 获取当前年份。
Today().Year()
逻辑函数
Contains(列表)
函数语法
Contains(查找范围-列表,查找对象)
查找范围-列表.Contains(查找对象)
函数说明
检查查找范围(列表)是否包含查找对象。
示例
//检查公司员工是否包含张三
Contains(公司员工, 张三) → true
Contains(文本)
函数语法
Contains(查找范围,查找对象)
查找范围.Contains(查找对象)
函数说明
检查查找范围(文本)是否包含查找对象。
示例
Contains("BizFlow", "test") → false
Contains("中国", "中") → true
// 检查姓名中是否包含“张”。
姓名.Contains("张")
Equals
函数语法
Equals(数据A,数据B)
数据A.Equals(数据B)
函数说明
检查数据A是否完全等于数据B。
示例
// 检查员工类型是否等于“全职”。
员工类型.Equals(全职)
false
函数说明
常量,代表逻辑值 false。
HasAnyOf(列表)
函数语法
HasAnyOf(列表A,列表B)
列表A.HasAnyOf(列表B)
函数说明
检查查找列表A和B是否有交集。
示例
List("a", "b", "c").HasAnyOf(List("d", "b", "c"))
// 检查人员的值是否包含张三、李四或王五。
员工.HasAnyOf(List(张三,李四,王五))
HasAnyOf(值1,值2,值3…)
函数语法
HasAnyOf(列表A,值1,值2,值3…)
列表A.HasAnyOf(值1,值2,值3…)
函数说明
检查列表A和值1,值2,值3…是否有交集。
示例
// 检查人员的值是否包含张三、李四或王五。
员工.HasAnyOf(张三,李四,王五))
If
函数语法
If(判断条件, 真值, [假值])
If(判断条件1, 真值1, [判断条件2, 真值then2, ... [假值]])
函数说明
检查是否满足一个或多个判断条件,如果条件成立,返回真值;如果条件不成立,返回假值。
示例
真值和假值的类型必须相同。多个判断条件时,返回符合第一个条件的值,否则将返回默认值(未指定默认值或条件不命中,则返回零值)。在分支语句中可以包含语句。
// 示例 1:用于逻辑判断。
If(成绩>90,"优秀","继续努力")
If(成绩>90,"优秀")
// 示例 2: 多重判断。
If(a >= 100, "满分", a >= 80, "优秀", a >= 60, "合格", "不合格")
IsAnyOf(列表)
函数语法
IsAnyOf(查找对象,列表)
查找对象.IsAnyOf(列表)
函数说明
检查查找对象是不是在列表内。
示例
// 检查人员类型的值是否属于全职或外包。
员工类型.IsAnyOf(List(全职,实习,外包))
IsAnyOf(值1,值2,值3…)
函数语法
IsAnyOf(查找对象,值1,值2,值3…)
查找对象.IsAnyOf(值1,值2,值3…)
函数说明
检查查找对象是不是在值1,值2,值3…内。
示例
// 检查人员类型的值是否属于全职或外包。
员工类型.IsAnyOf(全职,实习,外包)
IsBlank
函数语法
IsBlank(数据)
数据.IsBlank()
函数说明
检查数据是否为空。
示例
// 检查上级是否为空。
上级.IsBlank()
IsNotBlank
函数语法
IsNotBlank(数据)
数据.IsNotBlank()
函数说明
检查数据是否不为空。
示例
// 检查上级是否不为空。
上级.IsNotBlank()
NotEquals
函数语法
NotEquals(数据A,数据B)
数据A.NotEquals(数据B)
函数说明
检查数据A是否不等于数据B。
示例
// 检查员工类型是否等于“全职”。
员工类型.NotEquals(全职)
true
函数说明
常量,代表逻辑值true。
数学函数
Abs
函数语法
Abs(数字)
数字.Abs()
函数说明
返回数字的绝对值
示例
// 计算数字的绝对值
Abs(-2)→ 2
Average
函数语法
Average(数字 1,数字 2,…)
数字列表.AVERAGE()
函数说明
求平均数(空值不纳入计算)。
函数示例
// 计算数字的平均值。
Average(1,2,3,4,5) → 3
// 计算全班的平均分。
数学成绩单.成绩.Average()
Log
函数语法
Log(真数,[底数])
真数.Log([底数])
函数说明
基于指定的底数,计算数字的对数,底数不填时,默认为 10
示例
// 示例1:计算指定底数的对数。
Log(8,2) → 3
// 示例2:计算10的对数。
Log(10) → 1
Max(数字)
函数语法
Max(值 1,值 2,…)
函数说明
获取最大的数字。
示例
// 获取数字列表中的最大值。
Max(1,2,3) → 3
Max(列表)
函数语法
Max(列表)
列表.Max()
函数说明
获取最大的数字,或最晚的日期 / 日期时间。
示例
// 计算数学成绩最高分。
数学成绩单.成绩.Max()
Max(时间)
函数语法
Max(时间 1,时间 2,…)
函数说明
获取最晚的日期 / 日期时间。
示例
// 获取最晚的日期。
Max(DateTime(2022,12,05) ,DateTime(2020,12,05) ,DateTime(2002,12,05) ) → DateTime(2022,12,05)
Min(数字)
函数语法
Min(值 1,值 2,…)
函数说明
获取最小的数字。
示例
// 获取数字列表中的最小值。
Min(1,2,3) → 1
Min(列表)
函数语法
Min(列表)
列表.Min()
函数说明
获取最小的数字,或最早的日期 / 日期时间。
示例
// 计算数学成绩最低分。
数学成绩单.成绩.Min()
Min(时间)
函数语法
Min(时间 1,时间 2,…)
函数说明
获取最早的日期 / 日期时间。
示例
// 获取最早的日期。
Min(DateTime(2022,12,05) ,DateTime(2020,12,05) ,DateTime(2002,12,05) ) → DateTime(2002,12,05)
Mod
函数语法
Mod(被除数, 除数)
被除数.Mod(除数)
函数说明
返回两数相除的余数
函数示例
// 计算两数相除的余数。
MOD(17, 4) → 1
Power
函数语法
Power(底数,指数)
底数.Power(指数)
函数说明
返回底数的次方
函数示例
// 返回底数的次方。
Power(5, -2) → 0.04
Round
函数语法
Round(数字,小数位数)
数字.Round(小数位数)
函数说明
将数字四舍五入到指定的位数。
示例
// 将数字四舍五入到指定的位数。
Round(3.1415, 2) → 3.14
Round(48.51, 0) → 49
Round(123.4, -1) → 120
RoundDown
函数语法
RoundDown(数字,小数位数)
数字.RoundDown(小数位数)
函数说明
将数字向下舍尾到指定的位数。
示例
// 将数字向下舍尾到指定的位数。
RoundDown(3.1415, 2) → 3.14
RoundDown(48.51, 0) → 48
RoundDown(123.4, -1) → 120
RoundUp
函数语法
RoundUp(数字,小数位数)
数字.RoundUp(小数位数)
函数说明
将数字向上舍入到指定的位数。
示例
// 将数字向上舍入到指定的位数。
RoundUp(3.1415, 2) → 3.15
RoundUp(48.51, 0) → 49
RoundUp(123.4, -1) → 130
Sqrt
函数语法
Sqrt(数字)
数字.Sqrt()
函数说明
计算数字的正平方根
示例
// 计算数字的正平方根。
Sqrt(9)→ 3
Sum(列表)
函数语法
Sum(数字列表)
数字列表.Sum()
函数说明
求和。
示例
// 计算数字列表的总和。
Sum(List(1,2,3,4)) → 10
// 计算总成绩。
小明的成绩单.成绩.Sum()
Sum(值1,值2,值3)
函数语法
Sum(数字 1,数字 2,…)
函数说明
求和。
示例
// 计算数字的总和。
Sum(1,2,3,4) → 10
SumBy
函数语法
SumBy(列表,计算逻辑)
列表.SumBy(计算逻辑)
函数说明
对列表里每一个值做相关计算后累加。计算逻辑要求返回值为数字类型。列表的每一个元素用ThisItem指代。
示例
sumby(list(1,2,3),ThisItem*2) → 1*2+2*2+3*2=12
// 累计所有员工工资
SumBy(用户列表, ThisItem.工资)
SumProduct
函数语法
SumProduct (数字列表 1, 数字列表 2)
数字列表 1.SumProduct (数字列表 2)
函数说明
返回两个数字列表中对应元素的乘积之和
函数示例
// 计算两个列表中对应数字的乘积之和。
SumProduct (List(1, 2), List(3, 4)) → 11
集合函数
Count
函数语法
Count(列表)
列表.Count()
函数说明
统计列表中的元素个数
示例
// 统计部门下员工的数量 ["张三","李四","王五"]
List("张三","李四","王五").Count() -> 3
Count(List("张三","李四","王五")) -> 3
Extend
函数语法
列表1.Extend(列表2,修改原数据)
Extend(列表1,列表2,修改原数据)
函数说明
将列表2中的元素添加到列表1的末尾。修改原数据选填,默认值为false,即创建副本后修改
示例
// 将5678添加到1234的末尾
Extend(List(1,2,3,4),List(5,6,7,8)) → [1,2,3,4,5,6,7,8]
First
函数语法
First(列表)
列表.First()
函数说明
返回列表中的第 1 项。如果列表为空,则返回一个空值(null)。
示例
// 返回数字列表中的第 1 项。
List(1,3,5,7,11,13).First() → 1
First(List(1,3,5,7,11,13)) → 1
FirstN
函数语法
列表.FirstN(N)
FirstN(列表,N)
函数说明
获取前N个元素
示例
// 获取列表的前3个元素
List(1,3,5,7).FirstN(3) → [1,3,5]
Foreach
函数语法
列表.Foreach(操作)
Foreach(列表,操作)
函数说明
遍历列表中的元素,并对每个元素执行相同的操作。列表的每一个元素用 ThisItem 指代。
示例
// 将列表中每个元素的值加 1
Foreach(List(1,3,5,7),ThisItem+1) → [2,4,6,8]
GetAt
函数语法
GetAt(列表,第N项)
列表.GetAt(第 N 项)
函数说明
返回列表中的第N项。N从1开始。
示例
// 返回文字列表中的第 1 项。
List("狗","猫","鱼").GetAt(1) → "狗"
// 返回文字列表中的第 4 项。
List("狗","猫","鱼").GetAt(4) → Null
HasAllOf
函数语法
HasAllOf(列表1,列表2)
列表1.HasAllOf(列表2)
函数说明
判断列表1是否包含列表2中的所有元素
函数示例
HasAllOf(List(1,2,3,4), List(1,1,1)) → true
HasAllOf(List(1,2,3,4), List(1,5)) → false
Index
函数语法
Index(查找范围, 要查找的值)
查找范围.Index(要查找的值)
函数说明
返回要查找的值在查找范围里第一次出现的位置,找不到返回-1
示例
// 返回要查找的值在查找范围里第一次出现的位置
Index("xyz","x") → 1
Index("hello world","world") → 7
Index("xyz","a") → 找不到返回 -1
InsertAt
函数语法
列表.InsertAt(Index,插入元素,修改原数据)
InsertAt(列表,Index,插入元素,修改原数据)
函数说明
在列表中指定位置插入指定元素。Index 从1开始。如果 Index 大于列表长度,则在列表末尾插入。修改原数据选填,默认值为false,即创建副本后修改
示例
// 在数字列表的第2个元素处插入10
List(1,3,5,7).InsertAt(2,10) → [1,10,3,5,7]
Last
函数语法
Last(列表)
列表.Last()
函数说明
返回列表中的最后 1 项。如果列表为空,则返回一个空值(null)。
示例
// 返回数字列表中的最后 1 项。
List(1,3,5,7,11,13).Last() → 13
LastN
函数语法
列表.LastN(N)
LastN(列表,N)
函数说明
获取后N个元素
示例
// 获取列表的后3个元素
List(1,3,5,7).LastN(3) → [3,5,7]
List
函数语法
List(值 1,值 2,...)
函数说明
生成由值组成的列表。列表中的每个元素类型一致。
示例
// 生成由数字组成的列表。
List(1, 2, 3, 4) → [1,2,3,4]
// 生成由上级、上级的上级组成的列表。
List(上级,上级.上级) → [张三, 李四]
// 生成时间组成的列表
List(DateTime(2023,12,05), DateTime(2023,12,06)) → [2023-12-05, 2023-12-06 ]
Push
函数语法
Push(列表,要添加的值)
列表.Push(要添加的值)
函数说明
向列表尾部添加元素, 可添加任意多个元素
示例
List(4,5,6).Push(1,2,3) → List(4,5,6,1,2,3)
Push(List("a"), "b") → List("a","b")
Remove
函数语法
列表.Remove(要移除的值,修改原数据)
Remove(列表,要移除的值,修改原数据)
函数说明
在列表中移除某个值,若有多个相同的值,移除第一个。修改原数据选填,默认值为false,即创建副本后修改
示例
// 从数字列表中移除 3。
List(1,3,5,7).Remove(3) → [1,5,7]
List(1,3,5,3).Remove(3) → [1,5,3]
RemoveAt
函数语法
列表.RemoveAt(Index,修改原数据)
RemoveAt(列表,Index,修改原数据)
函数说明
从列表中删除在 Index 位置的元素,并返回列表。Index 从 1 开始。修改原数据必填,false:创建副本后修改,true:修改原数据
示例
// 从数字列表中移除第2个元素。
List(1,3,5,7).RemoveAt(2,true) → [1,5,7]
Reverse
函数语法
列表.Reverse(修改原数据)
Reverse(列表,修改原数据)
函数说明
将列表中的元素反转。修改原数据选填,默认值为false,即创建副本后修改
示例
Reverse(List(1,4,3,2)) → [2,3,4,1]
Reverse(List("张三","李四","王五")) → [王五,李四,张三]
SetAt
函数语法
列表.SetAt(Index,Value,修改原数据)
SetAt(列表,Index,Value,修改原数据)
函数说明
将列表中位于Index的值替换为Value。Index 从1开始。修改原数据参数为选填,默认值为false,即创建副本后修改
示例
// 将列表中第 3 个元素的值替换为 10
SetAt(List(1,3,5,7),3,10) → [1,3,10,7]
Sort
函数语法
列表.Sort([排序方式])
Sort(列表,[排序方式])
函数说明
对列表中元素进行排序,默认升序。
示例
// 对数字列表进行升序排列。
Sort(List(1,4,3,2)) → [1,2,3,4]
SortBy
函数语法
列表.SortBy(排序字段,排序方式)
SortBy(列表,排序字段,排序方式)
函数说明
对列表按照指定字段进行排序,默认升序
示例
// 根据物品.数量字段对物品列表进行降序排列。
SortBy(物品,数量,降序) → [电脑支架,雨伞,笔记本]
Slice
函数语法
列表.Slice(Start, End)
Slice(列表, Start, End)
函数说明
从列表中提取指定范围的元素,并返回一个新的列表。
示例
// 从数字列表中提取第2个到第4个元素。
List(1,3,5,7,9).Slice(2, 4) → [3, 5, 7]
GroupBy
函数语法
List.GroupBy(CallbackFn)
GroupBy(List, CallbackFn)
函数说明
按照指定规则对列表进行分组。
示例
// 按照数字列表中的奇偶性进行分组
List(1,2,3,4,5,6).GroupBy(If(ThisItem%2 == 0, "偶数" ,"奇数")) → {"奇数": List(1,2,3), "偶数": List(2,4,6)}
// 按照员工所在城市进行分组
List(Employ1,Employ2,Employ3).GroupBy(ThisItem.City) → {"Beijing": [Employ1,Employ2], "Shanghai": [Employ3]}
Unique
函数语法
列表.Unique (修改原数据)
Unique (列表,修改原数据)
函数说明
删除列表中重复的值。默认保留第一项,可以配合 Sort/SortBy 函数使用。修改原数据选填,默认值为false,即创建副本后修改。
示例
// 删除 [1,1,3,4,2,4] 这个列表中重复的值。
Unique(List(1,1,3,4,2,4)) → [1,3,4,2]
Intersect
函数语法
Intersect(List1, List2)
函数说明
返回两个列表相同的元素,保留重复项。
示例
// 返回两个列表的交集。
Intersect(List(1,2,3,4,5,5),List(2,3,5,5,6,4)) → List(2,3,4,5,5)
Substract
函数语法
Substract(List1, List2)
函数说明
返回在List1中且不在List2中的元素。
示例
// 返回两个列表的补集。
Substract(List(1,2,3,4,5,5),List(3,4,5,5,6)) → List(1,2)
Union
函数语法
Union(List1, List2)
函数说明
返回List1和List2中的所有元素,无重复项。
示例
// 返回两个列表的并集。
Union(List(1,2,3,4,5,5),List(3,4,5,5,6)) → List(1,2,3,4,5,6)
Clear(Map)
函数语法
Map.Clear()
Clear(Map)
函数说明
清空Map中所有的Key和Value
示例
// 退出登录时清空用户登录信息
用户登录信息.Clear() → {}
Contains(Map)
函数语法
Map.Contains(Key)
Contains(Map,Key)
函数说明
检查在 Map 中是否包含指定的 Key
示例
// 判断用户是否有访问资源A的权限
用户的权限信息.Contains(资源A) → true
Count(Map)
函数语法
Map.Count()
Count(Map)
函数说明
返回 Map 包含的键值对的数量。
示例
// 获取商品数量
商品信息.Count(商品ID)
Get(Map)
函数语法
Map.Get(Key,默认值)
Get(Map,Key,默认值)
函数说明
根据Key,取出Map内的Value。未找到key时返回默认值,没有设置默认值返回空内容。
示例
// 根据学号获取学生的姓名
Get(Map("001", "Amy", "002", "Bob", "003", "John"),"001") → "Amy"
Get(Map("001", "Amy", "002", "Bob", "003", "John"),"004") → ""
Get
函数语法
JSON.Get("key")
函数说明
获取 JSON 参数中指定的参数值
示例
Boolean(ParseJSON("{"key1":true}").Get("key1")) → true
Float(ParseJSON("{"key1":123.5}").Get("key1")) → 123.5
ParseJSON("{"key1":"2022-05-10"}\").Get("key1") → 2022-05-10
ParseJSON("{"parent":{"key1":"text value"},"number":567"}").Get("parent").Get("key1") → "text value"
Boolean(ParseJSON("{"parent":{"child":true}}").Get("parent").Get("child")) → true
ParseJSON("{"text":"text value","number":567,"empty":null}").Get("empty") → null
ParseJSON("{"text":"text value","number":567,"empty":null}").Get("empty1") → null
Keys(Map)
函数语法
Map.Keys()
Keys(Map)
函数说明
获取 Map 的 所有 Key ,生成新列表
示例
//获取购物车中所有商品的 ID,并将它们存储在一个列表中
购物车.Keys() → List(商品1,商品2…商品n)
Put(Map)
函数语法
Map.Put(Key,Value,是否覆盖原Key值,修改原数据)
Put(Map,Key,Value,是否覆盖原Key值,修改原数据)
函数说明
添加一个新的键值对。Key 如果已经存在,可以配置是否覆盖,默认false不覆盖。修改原数据选填,默认值为false,即创建副本后修改
示例
// 新增用户信息
用户列表.Put(商品ID,商品名称)
Remove(Map)
函数语法
Map.Remove(Key,修改原数据)
Remove(Map,Key,修改原数据)
函数说明
删除对应的键值对。修改原数据选填,默认值为false,即创建副本后修改
示例
// 退出登录时清空当前用户登录信息
用户登录信息.Remove(当前用户ID)
Values (Map)
函数语法
Map.Values()
Values(Map)
函数说明
获取 Map 的所有 Value,生成新列表
示例
// 获取购物车中所有商品的数量,并将它们存储在一个列表中
购物车的商品名称.Values () → List(商品1的名称,商品2的名称…商品n的名称)
文本函数
Concatenate
函数语法
Concatenate([文本1, 文本2, 文本3…])
函数说明
将多个字符串拼接合成一个文本字符串。
示例
Concatenate("Hello","World") → HelloWorld
Concatenate("x","y") → "xy"
Join
函数语法
Join(文本列表,分隔符)
文本列表.Join(分隔符)
函数说明
使用分隔符组合多个文本值。
示例
// 使用 "-" 符号组合单词。
Join(List("This","is","Awesome"),"-") → This-is-Awesome
Len
函数语法
文本.Len()
Len(文本)
函数说明
返回指定字符串的长度,空格也将作为字符进行计数。
示例
Len("BizFlow") → 7
Len("中国") → 2
Lower
函数语法
文本.Lower()
Lower(文本)
函数说明
将指定字符串中的字母转换为小写。
示例
Lower("Feishu App Engine") → "feishu app engine"
Mid
函数语法
字符串.Mid(开始位置, 提取长度)
Mid(字符串, 开始位置, 提取长度)
函数说明
返回指定字符串中的子串。
示例
Mid("飞书应用引擎",3,2) → "应用"
Mid("xyz",2,1) → "y"
Repeat
函数语法
文本.Repeat(重复次数)
Repeat(文本,重复次数)
函数说明
将文本重复指定次数。
示例
Repeat("a",3) → aaa
Repeat("飞书应用引擎",2) → 飞书应用引擎飞书应用引擎
Left
函数语法
字符串.Left(字符数)
Left(字符串,字符数)
函数说明
从指定字符串的第一个字符开始,返回指定个数的字符。
示例
Left("飞书应用引擎", 2) → "飞书"
Right
函数语法
字符串.Right(字符数)
Right(字符串,字符数)
函数说明
从指定字符串的最后一个字符开始,返回指定个数的字符。
示例
Right("飞书应用引擎", 2) → "引擎"
Substitute
函数语法
文本.Substitute(搜索内容,替换内容,[替换位置])
Substitute(文本,搜索内容,替换内容,[替换位置])
函数说明
将原始文本字符串中,搜索到的指定内容替换为新的文本字符串。替换位置选填,默认全部替换。
示例
Substitute("aba","a","c",2) → "abc"
Text
函数语法
值.Text(格式)
Text(值, 格式)
函数说明
按照指定格式将数字或日期转化为文本。
示例
// 支持的数字格式:
#:数字占位符,用于自定义数字格式
Text(23.17,"##.#") → "23.2"
0 :数字补位符,用于自定义数字格式
Text(23.1,"0.00") → "23.10"
, :千位分隔符,在 # 或者 0 之间使用
Text(23100,"0,0") → "23,100"
% :百分号,需与 # 或者 0 结合使用
Text(23,"0%") → "2300%"
[Num0] :显示原始数据
Text(23.1,"[Num0] ") → "23.1"
[Num1] :将数字转为中文小写
Text(123, "金额:[Num1]") → "金额:一百二十三"
[Num2]:将数字转为中文大写
Text(123, "[Num2]") → "壹佰贰拾叁"
// 支持的日期格式:
YYYY :年份全称
Text(DateTime(2022,4,15),"YYYY") → "2022"
Text(DateTime(2022,4,15),"YYYY年") → "2022年"
YY :年份缩写
Text(DateTime(2022,4,15),"YY") → "22"
MMM :月份全称
Text(DateTime(2022,4,15),"MMM") → "四月"
MM :月份数字全写
Text(DateTime(2022,4,15),"MM") → "04"
M :月份数字简写
Text(DateTime(2022,4,15),"M") → "4"
DD :日全写
Text(DateTime(2022,4,1),"DD") → "01"
D :日简写
Text(DateTime(2022,4,1),"D") → "1"
DDDD :星期全称
Text(DateTime(2022,4,15),"DDDD") → "星期五"
DDD :星期简称
Text(DateTime(2022,4,15),"DDD") → "周五"
hh :小时
Text(Now(),"hh") → "17"
mm :分钟
Text(Now(),"hh:mm") → "17:30"
ss :秒钟
Text(Now(),"hh:mm:ss") → "17:30:29"
Trim
函数语法
文本.Trim()
Trim(文本)
函数说明
移除文本中的首尾空格和中间的重复空格。
示例
Trim(" Feishu App Engine ") → "Feishu App Engine"
Upper
函数语法
文本.Upper()
Upper(文本)
函数说明
将指定字符串中的字母转换为大写。
示例
Upper("Feishu App Engine") → "FEISHU APP ENGINE"
EncodeUrl
函数语法
EncodeUrl(文本)
函数说明
将文本参数进行 URL 编码,返回编码后的内容(文本)
示例
DecodeUrl
函数语法
DecodeUrl(文本)
函数说明
将指定的文本参数进行 URL 解码
示例
类型转换函数
Text
函数语法
Text(value)
函数说明
按照指定格式把任意数据转化为文本。
示例
// 将数字转化为文本。
Text(12345) → "12345"
Date
函数语法
Date(Year,Month,Day)
Date(TimeStamp/Time)
Date(String,Format)
函数说明
构造一个日期或将文本/日期时间/时间戳转换为日期。时间戳单位是毫秒。
示例
// 将时间戳转换为日期。
Date(1626850800000) → 2021-07-21
//将时间字符串转为日期
Date("07/21/2021 00:00:00", "MM/dd/yyyy") → 2021-07-21
DateTime
函数语法
DateTime(Year,Month,Day,Hour,Minute,Second)
DateTime(TimeStamp/Date)
DateTime(String,Format)
函数说明
构造一个日期时间或将文本/日期/时间戳转换为日期时间。时间戳单位是毫秒。
示例
// 将时间戳转换为日期时间。
DateTime(1626844800) → 2021-07-21 00:00:00
DateTime("07/21/2021 00:00:00", "MM/dd/yyyy HH:mm:SS") → 2021-07-21 00:00:00
TimeStamp
函数语法
TimeStamp(Date/DateTime)
函数说明
将日期/日期时间转换为Unix时间戳,即从1970年1月1日00:00:00 UTC到指定日期的毫秒数。
示例
// 将日期转为Unix时间戳。
TimeStamp(DateTime(2021,10,01)) → 1633017600000
Float
函数语法
Float(文本/整数/定点数)
文本/整数/定点数.Float()
函数说明
将内容为数字的文本、整数、定点数转化为浮点数格式。
函数示例
Float("1.234") → 1.234
Integer
函数语法
Integer(文本/浮点数/定点数)
文本/浮点数/定点数.Integer()
函数说明
将内容为数字的文本、浮点数、定点数转化为整数格式。浮点数转化为整数时按四舍五入处理。
函数示例
Integer("1234") → 1234
Decimal
函数语法
Decimal(文本/布尔)
函数说明
将文本、布尔的参数转化为 Decimal 类型
函数示例
Decimal("123.456") → 123.456
Decimal("123,456.789") → 123456.789
Decimal("123.456%") → 1.23456
Decimal("¥ 12.34") → 12.34
Decimal(false) → 0
Decimal("24.2111e3") → 24211.1
Decimal("10000000000.0000000001") → 10000000000.0000000001
Boolean
函数语法
Boolean(文本/整数)
函数说明
将数字、文本、无类型的参数、空值转化为布尔类型
函数示例
Boolean("true") → true
Boolean("false") → false
Boolean("TRUE") → true
Boolean("TrUe") → true
Boolean(null) → false
Boolean(0) → false
Boolean(-1234) → false
Boolean(1) → true
Email
函数语法
Email(Text)
函数说明
将字符串转化为邮箱地址。
示例
// 将数字转化为邮箱。
List
函数语法
List(Text)
函数说明
将多个参数转化为List。
示例
List(1,2,3) → [1,2,3]
List("a","b","c","d") → ["a","b","c","d"]
List(true,false,true) → [true,false,true]
JSON
函数语法
JSON(Text,Text,Text)
函数说明
将多组 key value 转化为 JSON。
示例
JSON("key1" , "value1" , "key2" , "value2") → {"key1":"value1", "key2": "value2"}
ParseJSON
替代线上 FromJSONStr
函数语法
ParseJSON(JSONString)
函数说明
将JSON格式的字符串转换为Object。
示例
// 将JSON格式的字符串转换为Object
ParseJSON("{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}") → {"name": "John", "age": 30, "city": "New York"}
ToJSONStr
函数语法
ToJSONStr(变量)
函数说明
把任意数据序列化为JSON格式的字符串。
示例
List(1,2,3).ToJSONStr() → "[1,2,3]"
当前用户.ToJSONStr() → {"_name":"xiaoming", "_id":"11111"}
JSONToList
函数语法
变量.JSONToList()
函数说明
将指定的 JSON 参数转成 List
示例
ParseJSON("[{"id":1,"name":"one"},{"id":2,"name":"two"}]").JSONToList() → [{"id":1,"name":"one"},{"id":2,"name":"two"}]"}
其他函数
Filter
函数语法
Filter(Table,Condition)
函数说明
根据条件筛选出相关记录。
示例
项目是一个对象,项目对象中包含一个文本字段-名称,筛选出项目名称中包含“上市项目”的记录
Filter(项目, 名称.Contains("上市项目")) → [上市项目-资产负债表,上市项目-现金流量表]
Switch
函数语法
Switch(Expression, Case1, Result1, Case2, Result2, ..., Default)
函数说明
根据表达式的值,在多个选项中进行匹配,并返回匹配的结果。如果表达式的值与任何选项都不匹配,则返回默认值。
示例
// 根据进度状态返回对应的数字
Switch("Done", "Done", 10, "Open", 1, 5) → 10
Switch("In progress", "Done", 10, "Open", 1, 5) → 5
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
联系我们立即试用