内置函数

本帮助页面上的信息同时适用于 CXone StudioDesktop Studio

Studio 具有内置函数,您可以在脚本中使用。有些内置函数可以在 Snippet editor 窗口中键入时弹出的自动完成列表中找到。还有一些内置函数不在列表中,但您仍可使用。有关所有可用内置函数的详细信息,请参阅本页后半部分。

本页还提供了按类别分组的内置函数列表。当您知道要处理的数据类型和要完成的任务但不知道函数名称时,这样可以更轻松地找到函数。您可以查看允许您执行以下操作的函数列表:

还有一个列表,其中包含不适合某个类别的其他函数

您可以在函数帮助页面了解有关在 Studio 中使用函数的更多信息,包括创建自己的自定义函数。

本页不提供有关与 RestProxy 一起使用的内置函数的信息,RestProxy 是一种用于将脚本连接到 RESTful API 的服务。RestProxy 帮助页面介绍了这些函数。

尝试一下

下载函数示例脚本并将其导入 Studio。本帮助页面中的示例可在示例脚本的 Snippet 操作中使用。您可以打开 Snippet editor 窗口并运行调试器,了解每个示例是如何工作的。

与日期和时间一起使用的函数

在脚本中使用以下包含日期和时间的函数。Studio 支持 24 小时时间,不支持 12 小时时间。在脚本中处理时间时请考虑这一点。

OLE Automation Date 是以浮点数形式写入的日期。小数点左边表示自 1899 年 12 月 30 日午夜以来的天数。小数点右边是当天时间除以 24。例如,1899 年 12 月 31 日早上 6 点的浮点数是 1.25。

函数

说明

asdate() 使用默认日期格式将变量的内容转换为日期/时间字符串。
asdatedow() 以从 06 的顺序值返回星期几,其中 0 表示星期日。
asdatetime() 使用指定的日期/时间格式将变量的值转换为日期/时间字符串。
asgmt() asutc() 将变量的内容转换为日期/时间字符串(转换为 GMT 或 UTC)。
asisodatetime()

将变量的值转换为 ISO 8601 日期/时间格式:yyyy-MM-ddTHH:mm:ss.SSSXXX

astime() 将变量的内容转换为时间值。
dateadd(date, value) 返回基于 datevalue 的新日期。
datebuild(year, month, day) 使用指定的返回日期/时间字符串。
datediff(unit,date1, date2) 返回两个日期之间的差值。
datefmt(format) 使用指定的 format 将变量的内容转换为日期/时间字符串。
datepart(unit)

 

根据指定的 unit 返回日期或时间的一部分。
datetimebuild(year, month, day, hour, minute, second) 根据指定的 YearMonthDayHourMinuteSecond 返回日期/时间字符串。
dow() 以从 06 的序数值形式返回当前星期几,其中 0 为星期日。

与数字一起使用的函数

将以下函数与包含数值的变量一起使用。其他可与数字一起使用的函数是用于数学计算的函数。

函数

说明

ceil(value

返回大于或等于指定 value 的最小整数。

floor(value

返回小于或等于指定 value 的最大整数。

format(format) 返回一个字符串,其中包含使用指定的 format 格式化的数字字符。
isdigit() 评估变量的内容以确定第一个字符是否为数字 (0-9)。
isnumeric() 评估变量的内容以确定所有字符是否都是字母(A-Z 或 a-z)。
max(value1, value2) min(value1, value2) 返回两个指定值中的较大值或较小值。
random() 返回一个随机的非负整数。
round(value) 将指定的 value 舍入到最接近的整数。

与字母一起使用的函数

将以下函数与包含字母的变量一起使用:

函数

说明

isalpha() 评估变量的内容以确定所有字符是否都是字母(A-Z 或 a-z)。
isletter()

评估变量的内容以确定第一个字符是否为字母(a-z 或 A-Z)。

islower() isupper() 评估变量的内容以确定第一个字符是小写字母 (a-z) 还是大写字母 (A-Z)。
lower() upper()

将值中的所有字母字符转换为小写字母 (a-z) 或大写字母 (A-Z)。

执行计算的函数

使用这些函数执行数学计算。在使用 SNIPPET 操作时弹出的自动完成列表中,这些函数不可用,但如果您手动输入它们,它们便可正常运行。

函数

说明

abs(value)

返回指定的 value 的绝对值。

acos(value)

返回以弧度为单位的角度,其余弦值为指定的 value

asin(value)

返回以弧度为单位的角度,其正弦值为指定的 value

atan(value)

返回以弧度为单位的角度,其正切值为指定的 value

atan2(x, y)

返回以弧度为单位的角度,其正切值是两个指定数字 (x, y)的商。

cos(value)

返回指定的 value 的余弦值。value 必须以弧度为单位。

cosh(value)

返回指定的 value 的双曲余弦值。value 必须以弧度为单位。

exp(value)

返回乘以 value 中指定的幂的数字。

ln(value)

返回 value 的自然对数(以 e 为底)。value 指定为以 10 为底的数字。

log10(value)

返回指定的 value 的以 10 为底的对数。

log2(value, base)

返回指定的 value 的以 2 为底的对数。value 指定为以 10 为底的数字。

logn(value, base)

返回指定 base 的指定 value 的对数。两个参数都指定为以 10 为底的数字。

round(value)

将指定的 value 舍入到最接近的整数。

sgn(value)

返回一个值,表示指定 value 的符号。如果 value 小于 0 返回 -1,如果 value 等于 0 返回 0,如果 value 大于 0 返回 1

sin(value)

返回指定的 value 的正弦值。value 必须以弧度为单位。

sinh(value)

返回指定的 value 的双曲正弦值。value 必须以弧度为单位。

sqrt(value)

返回指定的 value 的平方根。

tan(value)

返回指定的 value 的正切值。value 必须以弧度为单位。

tanh(value)

返回指定的 value 的双曲正切值。value 必须以弧度为单位。

trunc(value)

计算指定的 value 的整数部分。trunc()value 取到最接近零的整数。

修改值的函数

将变量赋值给其他变量时,如果想更改变量值,请使用以下函数。

除了本表中的函数外,许多用于日期和时间的函数都可以修改值。例如,可以将日期值转换为不同的日期格式。

函数

说明

append(text) 将第一个变量的内容添加到第二个变量。
asjson() asxml() 将变量的内容转换为 JSON 或 XML。
dateadd(date, value)

返回基于 datevalue 的新日期。

datefmt(format)

使用指定的 format 将变量的内容转换为日期/时间字符串。

format(format) 返回一个字符串,其中包含使用指定的 format 格式化的数字字符。
lower() upper()

将值中的所有字母字符转换为小写字母 (a-z) 或大写字母 (A-Z)。

replace(old, new) new 替换所有出现的 old
split(delimiter) 将变量内容转换为以竖线分隔的字符串,该字符串可作为数组处理。以竖线分隔字符替换指定的现有 delimiter
trim() ltrim() rtrim() 返回一个空白字符已移除的字符串。您可以移除所有空白,也可以只移除前导或尾随空白字符。
urlencode() urldecode() 根据 URL 编码的互联网标准对 URL 进行编码或解码。

确定值中内容的函数

使用这些函数查看变量的内容:

函数

说明

contains(value) 评估指定的 value 的变量。
count() 返回数组或对象中的元素个数。
index(indexValue) 根据指定的 indexValue 从变量的内容返回数组元素。
indexof(text) 返回指定的 text 在变量内容中的字符位置。
isalpha () 评估变量的内容以确定所有字符是否都是字母(A-Z 或 a-z)。
isdigit() 评估变量的内容以确定第一个字符是否为数字 (0-9)。
isletter()

评估变量的内容以确定所有字符是否都是字母(A-Z 或 a-z)。

isnumeric()

评估变量的内容以确定所有字符是否都是数字 (0-9)。

isupper() islower() 评估变量的内容以确定第一个字符是小写字母 (a-z) 还是大写字母 (A-Z)。
length() 返回变量值中的字符数。
left() right() 如果字符是数字,则返回变量内容中最左或最右的字符。返回的字符数基于指定的 count
size()

返回数组中的元素个数。

提取部分值的函数

当您想从一个变量中提取部分值用于另一个变量时,请使用这些函数:

函数

说明

datepart(unit)

根据指定的 unit 返回日期或时间的一部分。

index(indexValue) 根据指定的 indexValue 从变量的内容返回数组元素。
left(count) right(count) 如果字符是数字,则返回变量内容中最左或最右的字符。返回的字符数基于指定的 count
mid(start, length) 返回从 startstart+length 的字符。
substr(start, end) 返回从 start end 的字符。

与数组一起使用的函数

以下函数可用于数组。

函数

说明

count()

返回数组或对象中的元素个数。

index(indexValue)

根据指定的 indexValue 从变量的内容返回数组元素。

indexof(text)

返回指定的 text 在变量内容中的字符位置。

size()

返回数组中的元素个数。

split(delimiter)

将变量内容转换为以竖线分隔的字符串,该字符串可作为数组处理。以竖线分隔字符替换指定的现有 delimiter

其他

函数

说明

char(code)

从 ASCII code 值返回一个字符,这使脚本能够以编程方式向字符串添加特殊字符。

copy(objectName)

创建动态数据对象 objectName 所持数据的副本。副本与原始版本是分开的,因此您可以更改一个版本中的值,而不影响另一个版本中的相同值。

iif(compare, trueval, falseval)

数字 Inline-If。评估 compare,然后根据评估结果返回 truevalfalseval

iifs(compare, trueval, falseval)

字符串 Inline-if。评估 compare,然后根据评估结果返回 truevalfalseval

isnull()

确定动态数据对象或对象的属性是否为空(未定义或 0)。

savetodb(1or0) 允许您将变量的值保存到数据库中。
screenpop()

返回一个值,指示是否在变量上设置 ScreenPop 标记。

setscreenpop(1or0)

如果当前 ACD 技能关闭 用于根据坐席的技能、能力和知识自动传递交互已启用使用屏幕弹出功能,则可以在弹出屏幕关闭 一个可配置的弹出窗口,包含有关联系人的信息。 它在某个事件后出现在坐席的屏幕上,通常在坐席连接到一个联系人时。中使用变量的值。此功能不适用于数字脚本。如果要在数字脚本中使用屏幕弹出功能,请使用 POPURL 操作RUNAPP 操作CXone Studio 中的帮助页面:POPURL 操作RUNAPP 操作

setscreenpop() 并不是一个真正的函数。它是 Studio 变量的一个属性,可以在使用弹出屏幕关闭 一个可配置的弹出窗口,包含有关联系人的信息。 它在某个事件后出现在坐席的屏幕上,通常在坐席连接到一个联系人时。时设置。在使用代码片段时,可以将其应用于变量。使用 Assign 操作创建变量时也可以设置它。

setscreenpop() 添加到以 1 为参数的变量中,即可将变量值传递给弹出屏幕。

ASSIGN val1 = "name"
ASSIGN popthis = val1.setscreenpop(1)

 

所有可用函数

本节将详细介绍每个内置函数的使用方法。除非另有说明,否则可以在使用变量或表达式的任何地方调用这些函数。

abs(value)

返回指定的 value 的绝对值。

ASSIGN abVal = "{abs(-42)}"

示例的结果abVal = 42

acos(value)

返回以弧度为单位的角度,其余弦值为指定的 value

ASSIGN angleRad3 = "{acos(cosNum)}"

示例的结果angleRad3 = 0.394791119699762

append(string)

string 附加到变量内现有内容的末尾。此函数仅在 SnippetASSIGN 操作中运行。

IF TEST = 1
{
  ASSIGN originalString = "My name"
  ASSIGN originalString2 = "Whose pajamas are these? "
  ASSIGN appendWithEscape = $"They're the cat's pajamas."			
}
originalString.append(" is Inigo Montoya.")
originalString2.append(AppendWithEscape)

示例的结果:

  • originalString = My name is Inigo Montoya.
  • originalString2 = Whose pajamas are these?They're the cat's pajamas.

asdate()

使用默认日期格式将变量的内容转换为日期/时间字符串。

作为字符串表达式使用时:将变量内容转换为日期和时间字符串。

作为数值表达式使用时:通过解析字符串内容,将变量内容转换为 OLE 自动化日期时间。字符串内容必须符合窗口标准日期格式之一,如 mm/dd/yyyy

IF TEST = 1
{
  ASSIGN myDate = "{date}"
}

//This example converts a date string into its OLE numeric equivalent
ASSIGN numericDate = myDate.asdate()

//This example converts an OLE numeric date to its string equivalent
ASSIGN stringDate = "{numericDate.asdate()}" 

此示例的结果取决于函数运行时的当前本地日期。如果当前本地日期是 07/03/2023。结果为:

  • numericDate = 45110
  • stringDate = 07/03/2023

asdatedow()

通过解析字符串内容,将变量的内容转换为 OLE 自动化日期/时间,然后以从 06 的序数值形式返回星期,其中 0 表示星期日。字符串内容必须符合 窗口 标准日期格式之一,如 MM/dd/yyyy

IF TEST = 1
{
  ASSIGN MyDate = "07/03/2023"
}
ASSIGN MyDow = MyDate.asdatedow()
SWITCH MyDow
{
  CASE 0   { ASSIGN newToday = "Sunday" }
  CASE 1   { ASSIGN newToday = "Monday" }
  CASE 2   { ASSIGN newToday = "Tuesday" }
  CASE 3   { ASSIGN newToday = "Wednesday" }
  CASE 4   { ASSIGN newToday = "Thursday" }
  CASE 5   { ASSIGN newToday = "Friday" }
  CASE 6   { ASSIGN newToday = "Saturday" }
}

示例的结果

  • myDow = 1
  • newToday = Monday

asdatetime()

使用指定的日期/时间格式将变量的值转换为日期/时间字符串。

作为字符串使用时:将变量内容转换为日期和时间字符串。

作为数值使用时:通过解析字符串内容,将变量内容转换为 OLE 自动化日期时间。字符串内容必须符合 Windows 标准 日期时间格式,如 MM/dd/yyyy HH:mm:ss

如果输入的是没有时间的日期,函数会添加时间。默认时间为 12:00 AM。

IF TEST = 1
{
  ASSIGN MyDateTime = "{now}"
  ASSIGN anotherDateTime = "04/03/23 11:34:09 PM"
}
ASSIGN numericDateTime = myDateTime.asdatetime()
ASSIGN numericDateTime2 = anotherDateTime.asdatetime()

ASSIGN stringDateTime = "{numericDateTime.asdatetime()}"
ASSIGN stringDateTime2 = "{numericDateTime2.asdatetime()}"
		

示例的结果:

  • numericDateTime = 45110.3720486111(当当前本地时间日期/时间为 7/3/2023 8:55:45 AM 时)
  • numericDateTime2 = 45019.9820486111
  • stringDateTime = 7/3/2023 8:55:45 AM
  • stringDateTime2 = 4/3/2023 11:34:09 PM

asgmt()asutc()

asgmt() 函数将时间转换为 GMT,asutc() 函数将时间转换为 UTC。日期的格式取决于变量的原始内容。

使用字符串表达式时:函数将值转换为转换为 GMT 或 UTC 的 OLE 自动化日期/时间。该变量必须包含日期/时间的有效字符串表示形式。源时间基于 租户关闭 用于管理 CXone环境的技术支持、计费和全局设置的高级组织分组 时区或通过 Timezone 操作 CXone Studio 中的帮助页面:Timezone 操作设置的时区。

与数字表达式一起使用时:函数会将值转换为转换为 GMT 或 UTC 的日期/时间字符串。例如:“10 月 3 日星期一202213:35:14 GMT”。

当使用这些函数时,变量中包含的时间格式不能包含以下任意内容:

  • 与 UTC 的偏差。
  • Z 字符,如 2022-03-04 18:54:39.000Z。包含 Z 表示时间与 GMT/UTC 的偏移为零。

asgmt()asutc() 试图转换时区时,包含上述任一字符都会导致错误,因为原始时区被视为与业务单位的时区不同。此外,为避免在使用 ISO 8601 日期/时间格式时出现错误,可在 Snippet 操作前包含一个 Timezone 操作,并将其设置为使用业务单位的时区。这样就可以在脚本级别设置时区,使脚本和业务部门使用相同的时区。

IF TEST = 1
{
  ASSIGN MyDateTime = #"{now}" 
}

ASSIGN GMTDateTimeNumeric = MyDateTime.asgmt()
ASSIGN GMTDateTimeString = "{GMTDateTimeNumeric.asdatetime()}"

ASSIGN UTCDateTimeNumeric = MyDateTime.asutc()
ASSIGN UTCDateTimeString = "{UTCDateTimeNumeric.asdatetime()}"

asin(value)

返回以弧度为单位的角度,其正弦值为指定的 value

ASSIGN angleRad4 = "{asin(sinNum)}"

示例的结果 angleRad4 = 0.394791119699762

asisodatetime()

将变量的值转换为 ISO 8601 日期/时间格式:yyyy-MM-ddTHH:mm:ss.SSSXXX。该函数的输出始终为 ISO 日期/时间格式。

在 REST API 调用中,与指定的 UTC 存在偏移并显示在响应中的 ISO 时间戳被转换为山区时间 (MT)。如果未指定偏移量,则不会转换该时间戳。

IF TEST = 1
{
	ASSIGN myDateTime = "{now}"
	ASSIGN anotherDateTime = "04/03/23 11:34:09 PM"
}
ASSIGN numericDateTime = myDateTime.asisodatetime()
ASSIGN numericDateTime2 = anotherDateTime.asisodatetime()
ASSIGN stringDateTime = "{numericDateTime.asisodatetime()}"
ASSIGN stringDateTime2 = "{numericDateTime2.asisodatetime()}"

示例的结果:

  • numericDateTime = 2023-07-03T09:43:06.000Z(当前本地时间日期/时间为 7/3/2023 9:43:06 AM)
  • numericDateTime2 = 2023-04-03T23:34:09.000Z
  • stringDateTime = 2023-07-03T05:43:06.000Z
  • stringDateTime2 = 2023-04-03T19:34:09.000Z

asjson()asxml()

将 JSON 或 XML 对象转换为字符串,并将其赋值给新变量。下面的示例使用的是动态数据对象,但您也可以将这些函数用于 API 调用返回的对象或虚拟坐席机器人关闭 代替现场人工坐席处理客户交互的软件应用程序。操作返回的对象。)

asjson() 函数会将对象中的所有内容转换为带双引号的字符串,包括数值或布尔值关闭 一种数据类型,它有两种可能值:真和假。。如果需要在 JSON 中使用格式正确的数值或布尔值,可以在脚本中考虑到这一点。一种解决方案是使用 replace() 函数。通过该函数,您可以用 null 替换字符串值中的双引号。

DYNAMIC object1
ASSIGN object1.value1 = "this"
ASSIGN object1.value2 = "that"
DYNAMIC object2				
ASSIGN object2.value1 = "first"
ASSIGN object2.value1 = "last"			

ASSIGN objectjson = "{object1.asjson()}"
ASSIGN objectxml = "{object2.asxml()}"		

另一种解决方案是注入占位符字符串,在将动态对象转换为 JSON 字符串后手动替换这些占位符字符串。

ASSIGN integerValue = 1234
ASSIGN trueValue = true
ASSIGN falseValue = false
DYNAMIC object
ASSIGN object.myIntegerValue = "INTEGERVALUE_PLACEHOLDER"
IF trueValue = true
  {
	ASSIGN object.myTrueValue = "TRUE_PLACEHOLDER"
  }
ELSE
  {
	ASSIGN object.myTrueValue = "FALSE_PLACEHOLDER"
  }
IF falseValue = true
  {
	ASSIGN object.myFalseValue = "TRUE_PLACEHOLDER"
  }
ELSE
  {
	ASSIGN object.myFalseValue = "FALSE_PLACEHOLDER"
  }
ASSIGN objectJSON = "{object.asjson()}"

ASSIGN objectJSON = objectJSON.replace("{char(34)}TRUE_PLACEHOLDER{char(34)}","true").replace("{char(34)}FALSE_PLACEHOLDER{char(34)}","false")
ASSIGN objectJSON = objectJSON.replace("{char(34)}INTEGERVALUE_PLACEHOLDER{char(34)}",integerValue)

最佳实践: 在 Snippet 操作中使用 asjson() 函数,并将结果 JSON 存储在字符串变量中。当您需要传递 JSON 数据时,在其他 Studio 操作的属性中使用字符串变量。这种方法可避免保存脚本时出现验证错误的可能性。

示例的结果:

  • objectjson={"value1":"this","value2":"that"}

  • objectxml=<?xml version="1.0" encoding="utf-16" standalone="yes"?><DynamicDataObject><value1>first</value1><value2>last</value2></DynamicDataObject>

astime()

将变量的内容转换为时间值。

与字符串值一起使用时:将变量内容转换为 OLE 自动关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。日期时间。例如,0.353506944447872

与数值一起使用时:将变量内容转换为时间字符串。变量必须包含 OLE 自动化时间值。例如,8:29:03 AM

IF TEST = 1
{
  ASSIGN myTime = "{time}"
}

//This example converts a time string into its OLE numeric equivalent
ASSIGN numericTime = myTime.astime()

//This example converts a OLE numeric time to its string equivalent
ASSIGN stringTime = "{numericTime.astime()}" 

此示例的结果取决于测试函数时的本地时间。如果 time 的值为 8:37:42 AM,则结果为:

  • numericTime = 0.359513888892252
  • stringTime = 8:37:42 AM

atan(value)

返回以弧度为单位的角度,其正切值为指定的 value

ASSIGN angleRad = "{atan(0.4166666666666667)}"		

示例的结果 angleRad=0.394791119699762

atan2(value)

返回以弧度为单位的角度,其正切值是两个指定数字 (x, y)的商。

ASSIGN angleRad2 = "{atan2(5,12)}"

示例的结果 angleRad2=0.394791119699761

ceil(value)floor(value)

ceil 返回大于或等于指定 value 的最小整数。

floor 返回小于或等于指定 value 的最大整数。

IF TEST = 1
{
  ASSIGN value = 102.589
}
ASSIGN newValue1 = floor(value)

ASSIGN newValue2 = ceil(value)

示例的结果:

  • newValue1102
  • newValue1103

contains(value)

如果变量包含指定的 value,则返回值 1 (true)。如果变量是一个数组,则会检查所有元素的确切 value

contains() 不区分大小写。

IF TEST = 1
{
  ASSIGN varString1 = "abc!123"
  ASSIGN varString2 = "8001234567|8881234567|8771234567"
  ASSIGN dnis = 8881234567
  ASSIGN dnis2 = 8887654321
}
ASSIGN stringFoundRes1 = varString1.contains('!') // true
ASSIGN stringFoundRes2 = varString1.contains('D') // false 

ASSIGN DNISFoundRes1 = varString2.contains(dnis) // true
ASSIGN DNISFoundRes2 = varString2.contains(dnis2) // false

示例的结果:

  • stringFoundRes11 (true)。
  • stringFoundRes20 (false)。
  • DNISFoundRes11 (true)。
  • DNISFoundRes20 (false)。

char(code)

从 ASCII code 值返回一个字符,这使脚本能够以编程方式向字符串添加特殊字符。例如,可以添加回车符、制表符和换行符。

请谨慎使用此函数。char(0)char(7) 保留给内部使用,可能会导致脚本故障。

IF TEST = 1
{
  ASSIGN textToSpeech = "John Doe"
  ASSIGN varWithCommas = "one,two,three,four"
}

ASSIGN character1 = "{char(34)}"
ASSIGN character2 = "{char(44)}"
ASSIGN character3 = "{char(39)}"

ASSIGN marqueeMessage = "Marquee {char(10) char(13)} Message on {char(10) char(13)} different lines."

ASSIGN promptListWithDoubleQuotes = "{char(34)}Prompts\File with space.wav{char(34)} {char(34)}{textToSpeech}{char(34)}"

ASSIGN varWithReplacedCommas = "{varWithCommas.replace(char(44),' ')}"

ASSIGN character4 = "{char(123)}"
ASSIGN character5 = "{char(125)}"
ASSIGN cssWithReplacedBrackets = "a {char(123)}text-decoration: none;{char(125)}"

示例的结果:

  • marqueeMessage = "Marquee

    Message on

    different lines."

  • promptListWithDoubleQuotes = "Prompts\File with space.wav" "John Doe"
  • varWithReplacedCommas = one two three four
  • cssWithReplacedBrackets = a {text-decoration: none;}

copy(objectName)

创建动态数据对象 objectName 所持数据的副本。副本与原始版本是分开的,因此您可以更改一个版本中的值,而不影响另一个版本中的相同值。了解有关复制动态对象的更多信息。

您可以使用带子属性的 copy() 函数:例如:currentContact.who = copy(beowulfCharacteristics.name)

DYNAMIC firstObject
DYNAMIC secondObject

secondObject = copy(firstObject)

与赋值引用相比,copy() 函数会占用更多的系统资源。它通过将对象转换为文本表示,然后再转换回对象,从而执行深度复制。如果处理的对象包含大量数据,这一过程可能会影响脚本的运行。

cos(value)

返回指定的 value 的余弦值。value 必须以弧度为单位。

ASSIGN angleRad = 0.394791119699762 //in radians
ASSIGN cosNum = "{cos(angleRad)}"		

示例的结果 cosNum=0.923076923076923

cosh(value)

返回指定的 value 的双曲余弦值。value 必须以弧度为单位。

 ASSIGN hCosine = "{cosh(angleRad)}"

示例的结果 hCosine=1.07894746856059

count()size()

返回数组中元素的个数。size() 仅适用于数组。count() 适用于对象中的数组。

如果值不是数组但不为空,则返回值 1 (true)。如果值为空,则返回 0 (false)。

IF TEST = 1
{
  ASSIGN example1 = "Beowulf|Grendel|Hrothgar|Wyrm|Breca|Scyld|Hrethel"
  ASSIGN example2 = "8015551234"
  ASSIGN example3 = ""
  DYNAMIC example4 
  ASSIGN example4[1].name = "Beowulf"
  ASSIGN example4[2].name = "Grendel"
}
ASSIGN ex1Size = example1.size()
ASSIGN ex2Size = example2.size()
ASSIGN ex3Size = example3.size()

ASSIGN ex1Count = example1.count()
ASSIGN ex2Count = example2.count()
ASSIGN ex3Count = example3.count()

ASSIGN ex4Count = count(example4)

示例的结果:

  • exSizeex1Count7
  • ex2Sizeex2Count1
  • ex3Sizeex3Count0
  • ex4Count2

dateadd(unit, date, value)

返回基于 datevalue 的新日期。。新日期将以 OLE 自动化关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。日期/时间的形式返回。value 的解释由 unit 决定。如果 value 为负,则从 date 中减去 value

最佳做法是传入有效的日期/时间变量,如下例所示,其中 myDateTime 的值前面有一个数字符号 (#)。这使其成为日期/时间变量

可能的单位选项有: yearmonthweekdayhourminutesecond

unit 区分大小写。将 unit 用双引号或单引号括起来,或传递包含 unit 的变量。如果传递变量,请勿用引号或大括号括起来。

要在字符串中使用此函数,请加入 asdatetime(),如下例所示。

IF TEST = 1
{
  ASSIGN myDateTime = #"{now}"
}
//These are examples of adding to a datetime variable:

ASSIGN newDateYearNumeric = dateadd('year', myDateTime, 1) //add a single year
ASSIGN newDateYearString = "{newDateYearNumeric.asdatetime()}"

ASSIGN newDateMonthNumeric = dateadd('month', myDateTime, 1) //add a single month
ASSIGN newDateMonthString = "{newDateMonthNumeric.asdatetime()}"

ASSIGN newDateWeekNumeric = dateadd('week', myDateTime, 1) //add a single week
ASSIGN newDateWeekString = "{newDateWeekNumeric.asdatetime()}"

ASSIGN NewDateDayNumeric = dateadd('day', MyDateTime, 1) //add a single day
ASSIGN NewDateDayString = "{NewDateDayNumeric.asdatetime}"

ASSIGN newDateHourNumeric = dateadd('hour', myDateTime, 1) //add a single hour
ASSIGN newDateHourString = "{newDateHourNumeric.asdatetime()}"

ASSIGN NewDateMinuteNumeric = dateadd('minute', myDateTime, 1) //add a single minute
ASSIGN NewDateMinuteString = "{NewDateMinuteNumeric.asdatetime()}"

ASSIGN newDateSecondNumeric = dateadd('second', myDateTime, 1) //add a single second
ASSIGN newDateSecondString = "{newDateSecondNumeric.asdatetime()}"

//This is an example of subtracting from a date:
ASSIGN oldDateMonthNumeric = dateadd('month', myDateTime, -2) //remove 2 months
ASSIGN oldDateMonthString = "{0ldDateMonthNumeric.asdatetime()}"

示例的结果 如下所示,使用 2023 年 3 月 3 日的格式 3/3/2023 10:42:44 AM 作为 now 的值:

newDateYearString = 3/3/2024 10:42:44 AM

newDateMonthString = 4/3/2023 10:42:44 AM

newDateWeekString = 3/10/2023 10:42:44 AM

newDateDayString = 3/4/2023 10:42:44 AM

newDateHourString = 3/3/2023 11:42:44 AM

newDateMinuteString = 3/3/2023 10:43:44 AM

newDateSecondString = 3/3/2023 10:42:45 AM

datebuild(year, month, day)

使用提供的 YearMonthDay 返回日期/时间字符串。

在字符串中使用时:以标准日期/时间格式返回包含时间的数字日期。时间默认为午夜。如果希望使用月名和日名显示日期,请使用 asdate()asdatetime() 函数,如下例所示。

在数值表达式中使用时:以 OLE 自动化关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。日期时间字符串形式返回日期。

IF TEST = 1
{
  ASSIGN month = "1"
  ASSIGN day = "24"
  ASSIGN year = "1936"
}

ASSIGN stringDate1 = "{datebuild(Year,Month,Day).asdate}"
ASSIGN stringDate2 = "{datebuild(Year,Month,Day)}"

ASSIGN numericDate = datebuild(Year,Month,Day)

示例的结果:

  • stringDate1 = 1/24/1936
  • stringDate2 = 1/24/1936 12:00:00 AM
  • numericDate = 13173

datediff(unit, date2)

返回 date1date2 两个日期之间的差值。

unit 指定了要比较的日期部分,date2 指定了要与变量中的值进行比较的日期。如果 date2 大于变量中的值,则结果为正。

可能的单位选项有:weekdayhourminutesecond

unit 区分大小写。将 unit 用双引号或单引号括起来,或传递包含 unit 的变量。如果传递变量,请勿用引号或大括号括起来。

如果差值是小数,返回值也是小数。例如,如果变量包含日期时间10/15/2022 6:00 AMdate210/16/2022 6:00 PM,则unit 的结果为 1.5

IF TEST = 1
{
  ASSIGN myDateTime = #"{now}"
  ASSIGN myBirthday = #"4/24/1936 10:42 PM"
}
ASSIGN weekDiff = datediff("week", myBirthday, myDateTime)
ASSIGN dayDiff = datediff("day", myBirthday, myDateTime)
ASSIGN hourDiff = datediff("hour", myBirthday, myDateTime)
ASSIGN minuteDiff = datediff("minute", myBirthday, myDateTime)
ASSIGN secondDiff = datediff("second", myBirthday, myDateTime)

示例的结果:

  • dayDiff = 1584.9546875
  • hourDiff = 38038.9125
  • minuteDiff = 2282334.75
  • secondDiff = 136940085
  • weekDiff = -368.850553902116

datefmt(date, format)

使用指定的格式字符串输出 datedate 的值是以下值之一:

在定义输出 format 时,可使用格式说明符来定义日期和时间的外观。

ASSIGN currentTime = now
ASSIGN formCurrentTime1 ="{datefmt(currentTime, 'yyyy-MM-dd HH:mm:ss')}"
ASSIGN formCurrentTime2 ="{datefmt(currentTime, 'MM/dd/yyyy hh:mm:ss')}"
ASSIGN formCurrentTime3 ="{datefmt(currentTime, 'HHmmssyyyyMMdd')}"
ASSIGN formCurrentTime4 ="{datefmt(currentTime, 'HH:mm:ss')}"

示例的结果

  • formCurrentTime1 = 2023-06-30 14:03:17
  • formCurrentTime2 = 06/30/2023 02:03:17
  • formCurrentTime3 = 14031720230630
  • formCurrentTime4 = 14:03:17

datefmt() 函数还允许您从现有日期/时间值中提取部分日期。为此,请使用以下语法:

ASSIGN <var> = "{<date var>.datefmt('<format>')}"

例如:

ASSIGN myDate = #"{now}"
ASSIGN myYear2 = "{myDate.datefmt('yyyy')}"

示例的结果 myYear2 = 2023

datepart(unit)

返回日期和时间的一部分。根据指定的 unit 返回日期或时间的一部分。 该变量必须包含日期/时间类型或格式正确的日期/时间字符串或 OLE 自动化编号关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。unit 指定要返回的日期部分。必须对日期/时间变量调用此函数。如果您将日期/时间值传递给此函数,它将不起作用。

可选择的单位有: yearmonthdayhourminuteseconddow

unit 区分大小写。将 unit 用双引号或单引号括起来,或传递包含 unit 的变量。如果传递变量,请勿用引号或大括号括起来。

如果该函数由于错误或意外输入而无法完成,则默认输出为 1899 年 12 月 30 日。

在字符串中使用时

返回指 定date 部分的字符串表示形式:

  • Month 返回三个字符的月份缩写。
  • Year 返回完整的四位数年份。
  • Hour 返回 24 小时格式的小时数。
  • Dow 代表星期并返回星期的全称。代表星期,返回星期名称的非缩写字符串。例如,星期四。

如果数值少于两位数,则除年份外的所有数值都以 0 为前缀。

在数字表达式中使用时

返回指定 date 部分的数字表示:

  • Year 返回完整的四位数年份。
  • Hour 返回 24 小时格式的小时数。
  • Dow 代表星期,返回工作日的序数值 (0-6),其中星期日为 0,星期一为 1,依此类推。
IF TEST = 1
{
  ASSIGN myDateTime = now
}
ASSIGN myYear = myDateTime.datepart('year')
ASSIGN myHour = myDateTime.datepart('hour')				
ASSIGN myMinute = myDateTime.datepart('minute')
ASSIGN mySecond = myDateTime.datepart('second')
				
ASSIGN stringMyDay = "{myDateTime.datepart('day')}"
ASSIGN numericMyDay = myDateTime.datepart('day')
				
ASSIGN stringMyMonth = "{myDateTime.datepart('month')}"
ASSIGN numericMyMonth = myDateTime.datepart('month')
							
ASSIGN stringMyDow = "{myDateTime.datepart('dow')}"
ASSIGN numericMyDow = myDateTime.datepart('dow')

示例的结果:

  • myYear = 2023
  • myHour = 13
  • myMinute = 51
  • mySecond = 3
  • stringMyDay = 30
  • numericMyDOW = 5
  • stringMyDOW = Friday
  • numericMyMonth = 6
  • stringMyMonth = Jun

datetimebuild(year, month, day, hour, minute, second)

返回日期/时间值。如果该函数由于错误或意外输入而无法完成,则默认输出为 1899 年 12 月 30 日。

在字符串中使用时:以标准日期/时间格式返回日期/时间。

用作数值表达式时:返回 OLE 自动化关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。日期/时间。

IF TEST = 1
{
  ASSIGN month = "1"
  ASSIGN day = "24"
  ASSIGN year = "1985"
  ASSIGN hour = "15"
  ASSIGN minute = "42"
  ASSIGN second = "13"
}
ASSIGN stringDate = "{datetimebuild(year,month,day,hour,minute,second)}"
ASSIGN numericDate = datetimebuild(year,month,day,hour,minute,second)

示例的结果:

  • numericDate = 31071.6543171296
  • stringDate = 1/24/1985 3:42:13 PM

dow()

以从 06 的顺序值返回星期几,其中 0 表示星期日。

该变量必须包含日期/时间类型或格式正确的日期/时间字符串或 OLE 自动化编号关闭 一种将日期写为浮点整数的方法。 指示自 1899 年 12 月 30 日以来的天数。。 如果该函数由于错误或意外输入而无法完成,则默认输出为 1899 年 12 月 30 日。

ASSIGN myNow = "{now}"
ASSIGN myDow = myNow.dow()

函数的结果取决于 dow 求值时的 now 值。

format(specifiers)

使用指定的 specifiers 返回格式化的字符串。specifiers 仅适用于变量中的数值。对于 pscifiers,请使用以下格式说明符:

  • C 或 c:货币
  • E 或 e:科学(指数)记数法。
  • F 或 f:定点
  • N 或 n:数字

  • P 或 p:百分比
  • R 或 r:往返
  • X 或 x:十六进制
  • 0:零占位符

您可以进一步了解与此函数一起使用的这些数字格式

IF TEST = 1
{
  ASSIGN stringVal = "0013001.93912837"
  ASSIGN stringVal2 = 6002348902348890234.234432234
}
ASSIGN currencyResultBigC = "{stringVal.format('C3')}"
ASSIGN currencyResultLilC = "{stringVal.format('c')}"

ASSIGN scientificResult = "{stringVal.format('e')}"
ASSIGN scientificResult2 = "{stringVal.format('E2')}"

ASSIGN fixedPointResult = "{stringVal.format('F3')}"
ASSIGN fixedPointResult2 = "{stringVal.format('f')}"


ASSIGN numberResult = "{stringVal.format('N')}"
ASSIGN numberResult2 = "{stringVal.format('n4')}"

ASSIGN percentResult = "{stringVal.format('P')}"
ASSIGN percentResult2 = "{stringVal.format('P2')}"

ASSIGN roundTripResult = "{stringVal.format('R')}"

ASSIGN number1 = "1789789"
ASSIGN sectionSeparator1 = number1.format('###,###.##;0000.00;000.0000')

ASSIGN number2 = "0"
ASSIGN sectionSeparator2 = number2.format('0.00;0000.00;000.0000')

ASSIGN number3 = "-4321"
ASSIGN sectionSeparator3 = number3.format('0.00;0000.00;000.0000')

ASSIGN number6 = "2343.56"
ASSIGN digitPlaceholders1 = number6.format('###.###')

//Examples of the double ## and 00 placeholders

ASSIGN number4 = "456.47"
ASSIGN doubleZeroSpecifier = number4.format('00')

ASSIGN number7  = "456.47"
ASSIGN doubledigitSpecifier = number7.format('##')

//in the following example, notice the 0 in the hundredths place. 
//With the zero placeholder, it appears in the output. With the # placeholder
//it does not. 

ASSIGN number5 = "2343456.2043"
ASSIGN zeroPlaceholders = number5.format('000,000.00')

ASSIGN number8 = "2043456.2043"
ASSIGN digitPlaceholders2 = number8.format('###,###.##')

示例的结果:

  • currencyResultBigC = $13,001.939
  • currencyResultLilC = $13,001.94
  • fixedPointResult = 13001.939
  • fixedPointResult2 = 13001.94
  • numberResult = 13,001.94
  • numberResult2 = 13,001.9391
  • percentResult = 1,300,193.91%
  • percentResult2 = 1,300,193.91%
  • roundTripResult = 13001.93912837
  • scientificResult = 1.300194e+004
  • scientificResult2 = 1.30E+004

index(indexValue)

根据指定的 indexValue 从变量的内容返回数组元素。 这与使用方括号读取数组是同样的概念。例如,variable[3]variable.index(3) 相同。

Studio 中的数组从 1 开始,而不是从 0 开始。

IF TEST = 1
{
  ASSIGN example1 = "Beowulf|Grendel|Hrothgar|Wyrm|Breca|Scyld|Hrethel"
  ASSIGN indexValue = 3
}
ASSIGN arrayPart1 = "{example1.index(indexValue)}"

indexof(string)

返回变量中包含的 string 的字符位置。第一个位置为 1。如果变量不包含 string,则函数返回值 0。该函数区分大小写。

IF TEST = 1
{
  ASSIGN example1 = "Beowulf|Grendel|Hrothgar|Wyrm|Breca|Scyld|Hrethel"
  ASSIGN example2 = "The Epic Poem"
}
ASSIGN arrayLoc = example1.indexof('Breca')
ASSIGN characterLoc = example2.indexof('E')
ASSIGN invalidLoc = example2.indexof('e')

iif(compare, trueval, falseval)

数字 Inline-If。评估 compare,然后根据评估结果返回 truevalfalseval

如果 compare 为非零 (true),则返回 trueval

如果 compare 为零 (false),则返回 falseval

truevalfalseval 必须都是数值或表达式。不可使用字符串。此函数与 iifs() 函数相同,只是它需要数值。

ASSIGN val1 = 4 > 5
ASSIGN val2 = 4  < 5

ASSIGN test1 = val1 > val2
ASSIGN test2 = val1 < val2

ASSIGN trueS = "you win"
ASSIGN falseS = "try again"

ASSIGN varFalse = "{iif(test1,trueS,falseS)}"

ASSIGN varTrue = "{iif(test2,trueS,falseS)}"

示例的结果:

  • varFalse = "try again"
  • varTrue = "you win"

iifs(compare, truestr, falsestr)

字符串 Inline-if。评估 compare,然后根据评估结果返回 truevalfalseval

如果 compare 为非零 (true),则返回 truestr

如果 compare 为零 (false),则返回 falsestr

该函数与 iif() 相同,只是它需要字符串。

ASSIGN val1 = "grapes" 
ASSIGN val2 = "grapey"

ASSIGN test1 = val1 >  val2
ASSIGN test2 = val1 <  val2

ASSIGN trueS = "you win"
ASSIGN falseS = "try again"

ASSIGN varFalse = "{iifs(test1,trueS,falseS)}"

ASSIGN varTrue = "{iifs(test2,trueS,falseS)}"

示例的结果 :

  • varFalse = "try again"
  • varTrue = "you win"

isalpha()

如果变量中的所有字符都是字母表中的字母(A-Z、a-z),则 isalpha() 函数返回 1 (true)。如果所有字符都不是字母,则该函数返回 0。空变量或包含特殊字符(例如 # 或 $)或数字的值返回 0。另请参阅:isletter()

IF TEST = 1
{
  ASSIGN varAlpha = "abcde"
  ASSIGN varNum = "12345"
}
ASSIGN alphaRes1 = varAlpha.isalpha() //true
ASSIGN alphaRes2 = varNum.isalpha() //false

isdigit()

如果变量中的第一个字符是数字 (0-9),则 isdigit() 函数返回 1 (true)。否则函数返回 0 (false)。空变量或以特殊字符开头的值返回 0。另请参阅:isletter()

IF TEST = 1
{
  ASSIGN example1 = "12Monkeys"
  ASSIGN example2 = "Oceans11"
}
ASSIGN result1 = example1.isdigit() //This is True
ASSIGN result2 = example2.isdigit() //This is False

isletter()

如果变量中的第一个字符是字母表中的字母(A-Z、a-z),则 isletter() 函数返回 1 (true)。否则函数返回 0 (false)。空变量或以特殊字符开头的值返回 0。另请参阅:isdigit()

IF TEST = 1
{
  ASSIGN example1 = "12Monkeys"
  ASSIGN example2 = "Oceans11"
}
ASSIGN result3 = example1.isletter() //This Is False
ASSIGN result4 = example2.isletter() //This Is True

isnumeric()

如果变量中的所有字符都是数字,isnumeric() 函数将返回 1 (true)。如果任何字符都是非数字,则该函数返回 0空变量或包含特殊字符(例如 # 或 $)或数字的值返回 0。另请参阅:isdigit()

IF TEST = 1
{
  ASSIGN varAlpha = "abcde"
  ASSIGN varNum = "12345"
}
ASSIGN numRes1 = varNum.isnumeric() //true
ASSIGN numRes2 = varAlpha.isnumeric() //false

islower()isupper()

如果变量的第一个字符是大写字母,isupper() 函数将返回 1 (true)。否则函数返回 0 (false)。

如果变量的第一个字符是小写字母,则 islower() 函数返回 1 (true)。否则函数返回 0 (false)。

IF TEST = 1
{
  ASSIGN example1 = "Beowulf"
  ASSIGN example2 = "monster fighter"
}
ASSIGN result1 = example1.isupper() //This is true
ASSIGN result2 = example2.isupper() //This is false
ASSIGN result3 = example1.islower() //This is false
ASSIGN result4 = example2.islower() //This is true

left(number)right(number)

返回最左边或最右边的 number 个字符。

IF TEST = 1
{
  ASSIGN example1 = "Abc.456"
  ASSIGN locationVar = 4
}
ASSIGN stringLeftVariable = "{example1.left(locationVar - 1)}"
ASSIGN numericLeftVariable = example1.left(locationVar - 1)
ASSIGN stringRightVariable = "{example1.right(locationVar + 1)}"
ASSIGN numericRightVariable = example1.right(locationVar + 1)

示例的结果

  • numericLeftVariable = Gre
  • numericRightVariable = 34567
  • stringLeftVariable = Gre
  • stringRightVariable = 34567

length()

返回变量值的文本表示形式的长度。例如,如果值是一个类似于 1234.56 的数字,则返回到长度为 7。空格和特殊字符计入长度。

IF TEST = 1
{
  ASSIGN example1 = "8015551234"
  ASSIGN example2 = 2357.984
  ASSIGN example3 = "Beowulf Herot"
}

ASSIGN ex1Len = example1.length()
ASSIGN ex2Len = example2.length()
ASSIGN ex3Len = example3.length()

示例的结果

  • ex1Len = 10
  • ex2Len = 8
  • ex3Len = 13

ln(value)

返回 value 的自然对数(以 e 为底)。value 指定为以 10 为底的数字。

ASSIGN natLog = "{ln(434)}"

示例的结果 natLog=6.07304453410041

log10(value)

返回指定的 value 的以 10 为底的对数。

ASSIGN log10Num = "{log10(434)}"

示例的结果 log10Num=2.63748972951251

log2(value)

返回指定的 value 的以 2 为底的对数。value 指定为以 10 为底的数字。

ASSIGN log2Num = "{log2(434)}"

示例的结果 log2Num=8.76155123244448

logn(value,base)

返回指定 base 的指定 value 的对数。两个参数都指定为以 10 为底的数字。

ASSIGN lognNum = "{logn(434,5)}"

示例的结果 lognNum=3.77339472817288

max(value1,value2)min(value1,value2)

max() 返回指定的两个数字值中较大的一个。

min() 返回指定的两个数字值中较小的一个。

如果传入字符串值,则这两个函数的计算结果始终为 0。

IF TEST = 1
{
  ASSIGN value1 = 10
  ASSIGN value2 = 12
}
ASSIGN resultMin = min(value1, value2)

ASSIGN resultMax = max(value1, value2)

示例的结果:

  • resultMin = 10
  • resultMax = 12

mid(start,length)

返回从 startstart+length 的字符。 第一个字符位置为 1。如果 start+length 超过源文本的长度,它会在源文本的结尾处自动截断。

该函数类似于 substr()mid()substr() 都会返回一个字符子集。不同的是,对于substr(),返回指定起点和终点之间的字符。凭借 mid(),该函数在指定的 start 之后返回由 length 定义的指定数量的字符。

IF TEST = 1
{
  ASSIGN phoneNum = "8015553549"
  ASSIGN fullName = "Hrothgar King"
}
ASSIGN localNumber = "{phoneNum.mid(4,7)}"

ASSIGN spaceLoc = fullName.indexof(' ')
ASSIGN fullNameLength = fullName.length
ASSIGN firstName = "{fullName.mid(1,SpaceLoc - 1)}"
ASSIGN lastName = "{fullName.mid(SpaceLoc + 1,fullNameLength - spaceLoc)}"

示例的结果:

  • firstName = Hrothgar
  • lastName = King
  • localNumber = 1234567

random(value)

返回一个大于或等于零且小于指定最大值的整数、非负随机数。

如果需要 1 到 value 范围内的值,可以在 random 函数输出中加上 1:

ASSIGN d20Result = random(20) + 1

IF TEST = 1
{
  ASSIGN value = 10
}
ASSIGN newValue1 = random(Value)
ASSIGN newValue2 = random(Value)
ASSIGN newValue3 = random(Value)
ASSIGN newValue4 = random(Value)

replace(old,new)

new 替换所有出现的 old。 此函数适用于以下所有格式变化:

  • ASSIGN result = "{value.replace(char,'-')}"
  • ASSIGN result = value.replace(char,'-')
  • ASSIGN result = value.replace('{char}','-')
  • ASSIGN result = value.replace("{char}",'-')
IF TEST = 1
{
	ASSIGN replaceTest1 = "$1234.56"
	ASSIGN replaceTest2 = "Beowulf%Grendel^Hrothgar*@Grendel\'s mom"
	ASSIGN replaceTest3 = "It   was   a   hard   battle."
	ASSIGN replaceTest4 = "Beowulf%Grendel^Hrothgar*@Grendel\'s mom"
}

//The first example will replace the dollar sign in an amount with nothing

ASSIGN replaceTest1 = "{replaceTest1.replace('$','')}"

//The second example we are just replacing random charcters and replacing
//them with a space.  The final result is a space between each name

ASSIGN replaceTest2 = "{replaceTest2.replace('%',' ')}"
ASSIGN replaceTest2 = "{replaceTest2.replace('^',' ')}"
ASSIGN replaceTest2 = "{replaceTest2.replace('*',' ')}"
ASSIGN replaceTest2 = "{replaceTest2.replace('@','')}"

ASSIGN replaceTest3 = "{replaceTest3.replace('  ',' ')}"
ASSIGN replaceTest3 = "{replaceTest3.replace('  ',' ')}"

//The following example is the second example, but broken out so 
//each step is preserved in a separate variable that you can see
//in the Debugger panel on the right. 

ASSIGN replaceTest4a = "{replaceTest4.replace('%',' ')}"
ASSIGN replaceTest4b = "{replaceTest4a.replace('^',' ')}"
ASSIGN replaceTest4c = "{replaceTest4b.replace('*',' ')}"
ASSIGN replaceTest4d = "{replaceTest4c.replace('@','')}"

示例的结果:

  • replaceTest1 = 1234.56
  • replaceTest2 = Beowulf Grendel Hrothgar Grendel\'s mom
  • replaceTest3 = It was a hard battle.
  • replaceTest4 = Beowulf%Grendel^Hrothgar*@Grendel\'s mom
  • replaceTest4a = Beowulf Grendel^Hrothgar*@Grendel\'s mom
  • replaceTest4b = Beowulf Grendel Hrothgar*@Grendel\'s mom
  • replaceTest4c = Beowulf Grendel Hrothgar @Grendel\'s mom
  • replaceTest4d = Beowulf Grendel Hrothgar Grendel\'s mom

round(value)

使用 IEEE 标准 754 第 4 节(也称为银行家舍入法)将 value 舍入到最接近的整数返回。

IF TEST = 1
{
  ASSIGN numEx = 102.5689
}
ASSIGN newValue = round(numEx)

示例的结果numEx = 102.5689

savetodb(1or0)

在交互结束时该函数将变量的值保存到数据库中。请注意,变量的值可能会随着脚本运行而改变。各种操作和进程都能够修改或清除变量的值。如果发生这种情况,并且您想要保存脚本中特定点的值,您可能需要创建一个新变量,为其分配所需的值,然后使用 savetodb()

savetodb() 并不是一个真正的函数。它是 Studio 中变量的属性。在使用代码片段时,可以将其应用于变量。您也可以在使用 Assign action时设置它。您可以通过两种方式访问​​存储的数据:

savetodb() 添加到以 1 为参数的变量中,以便将该变量的值保存到数据库中,如下例所示:

ASSIGN variable='123123123'
variable.savetodb(1)

如果在通过 RUNSUB 操作衍生的子脚本中使用 savetodb(),您必须将该变量声明为全局变量。这可确保在子脚本将控制权返回给调用脚本后该变量将持续存在。如果未将该变量声明为全局变量,则其为局部变量,仅存在于子脚本中。savetodb() 仅与调用脚本中存在的变量一起使用。

将子脚本中的变量声明为全局变量是访问子脚本中变量值的一种方法。另一种选择是使用 GET /contacts/{contactId}/custom-data 一个正方形图标,箭头从中心指向右上角。 API。

screenpop() and setscreenpop(1or0)

screenpop()setscreenpop() 并不是真正的函数它们是 Studio 中变量的属性,可以在使用弹出屏幕关闭 一个可配置的弹出窗口,包含有关联系人的信息。 它在某个事件后出现在坐席的屏幕上,通常在坐席连接到一个联系人时。时设置。在使用代码片段时,可以将其应用于变量。您也可以使用 Assign 操作来设置它们。

setscreenpop() 添加到以 1 作为参数的变量,以便将变量值传递到屏幕弹出窗口。

screenpop() 添加到变量,检查弹出屏幕标志是否已设置。如果为 true,该属性返回 1,如果为 false,则返回 0

ASSIGN val1 = "name"
//ASSIGN popthis = val1.setscreenpop(1)
ASSIGN ispop = thispop.screenpop

sgn(value)

返回一个值,表示指定 value 的符号。如果 value 小于 0 返回 -1,如果 value 等于 0 返回 0,如果 value 大于 0 返回 1

ASSIGN signOfNum = "{sgn(89)}, {sgn(0.00)}, {sgn(-89)}"

示例的结果 signOfNum = 1, 0, -1

sin(value)

返回指定的 value 的正弦值。value 必须以弧度为单位。

ASSIGN angleRad = 0.394791119699762
ASSIGN sinNum = "{sin(angleRad)}"

示例的结果 sinNum = 0.384615384615385

sinh(value)

返回指定的 value 的双曲正弦值。value 必须以弧度为单位。

ASSIGN hSine = "{sinh(angleRad)}"

示例的结果 hSine=0.405126696125173

split(delimiter)

以竖线分隔字符串的形式返回变量的内容,适合作为数组处理。将 delimiter 转换为竖线符号 (|)。

将结果赋值给一个新变量时,新变量的行为就像一个数组,并支持如 variable[index] 中的数组索引器语法。

Split 也可以在代码片段中使用,将变量转换为数组。以这种方式使用 Split 会改变变量的内容。

IF TEST = 1
{
  ASSIGN varString = "one,two,three,four"
}
//Example One using split to assign result to a new variable

ASSIGN varArray = "{varString.split(',')}"

//Example Two using split to change the value of an existing variable to an array

VvarString.split(',')

示例的结果:

  • varArray = one|two|three|four
  • varString = one|two|three|four

sqrt(value)

返回指定的 value 的平方根。

ASSIGN root = "{sqrt(25)}"

示例的结果 root = 5

substr(start,end)

返回从 start end 的字符。 第一个字符位置为 1。如果 end 超过源文本的长度,它将在源文本的结尾处自动截断。

该函数类似于 mid()mid()substr() 都会返回一个字符子集。不同的是,对于substr(),返回指定起点和终点之间的字符。凭借 mid(),该函数在指定的 start 之后返回由 length 定义的指定数量的字符。

IF TEST = 1
{
  ASSIGN enteredAmount = 15269
  ASSIGN phoneNum = "8015553437"

}
ASSIGN areaCode = "{phoneNum.substr(1,3)}"

ASSIGN amountLength = enteredAmount.length()
ASSIGN dollars = enteredAmount.substr(1,amountLength - 2)
ASSIGN cents = enteredAmount.substr(amountLength - 1,amountLength)
ASSIGN totalAmount = "${dollars}.{cents}"

示例的结果:

  • areaCode = 801
  • totalAmount = $152.69

tan(value)

返回指定的 value 的正切值。value 必须以弧度为单位。

ASSIGN angleRad = 0.394791119699762
ASSIGN tanNum = "{tan(angleRad)}"

示例的结果 tanNum = 0.416666666666667

tanh(value)

返回指定的 value 的双曲正切值。value 必须以弧度为单位。

ASSIGN angleRad = 0.394791119699762
ASSIGN hTan = "{tanh(angleRad)}"

示例的结果 hTan = 0.375483244486081

trim()ltrim()rtrim()

trim() 函数会返回一个已移除所有前导和尾随空白字符的字符串。空白包括空格、制表符和换行符。

ltrim() 函数会返回一个已移除所有前导空格字符的字符串。

ritrim() 函数会返回一个已移除所有尾随空格字符的字符串。

IF TEST = 1
{
  ASSIGN varString = "      Beowulf      "
}
ASSIGN trimRes = varString.trim

ASSIGN lTrimRes = varString.ltrim

ASSIGN rTrimRes = varString.rtrim

示例的结果

  • trimRes = "Beowulf "
  • lTrimRes = "Beowulf      "
  • rTrimRes = "      Beowulf".

trunc(value)

计算指定的 value 的整数部分。trunc()value 取到最接近零的整数。

ASSIGN truncNum = "{trunc(945.6)}, {trunc(946.9)}"

示例的结果 truncNum = 945, 946

upper()lower()

upper() 函数返回所有字母均转换为大写后的变量内容。

lower() 函数返回所有字母均转换为小写后的变量内容。

IF TEST = 1
{
  ASSIGN variable1 = "Beowulf is a monster fighter"
  ASSIGN variable2 = "BEOWULF IS A MONSTER FIGHTER"
}
ASSIGN variable1  = "{variable1.upper()}"

ASSIGN variable2  = "{variable2.lower()}"

urlencode()urldecode()

urlencode() 函数返回使用互联网 URL 编码标准编码的变量内容。例如,必须将某些数据添加到用于弹出屏幕关闭 一个可配置的弹出窗口,包含有关联系人的信息。 它在某个事件后出现在坐席的屏幕上,通常在坐席连接到一个联系人时。的 URL 中,以便正确发送。

urldecode() 函数将返回根据互联网 URL 编码标准解码的变量内容。在下面的例子中,urldecode() 正在解码变量URL,这意味着 URLnewURL 具有相同的值。

IF TEST = 1
{
  ASSIGN dnis= "5551234567"
  ASSIGN ani = "5550987654"
  ASSIGN waitTime = "2 02:39:42"
  ASSIGN callOriginationTime = "{datefmt(now, 'yyy-MM-dd HH:mm:ss')}"
}

ASSIGN URL = "?&sys_id=-1&sysparm_query=u_source_phone={DNIS}^u_caller_phone={ANI}^u_wait_time_string={waitTime}^opened_at={callOriginationTime}"
ASSIGN eURL = URL.urlencode()
ASSIGN popURL = "http://www.incontact.com{eURL}"

ASSIGN newURL = eURL.urldecode()