內建函數

本説明頁面上的資訊同時適用於 CXone StudioDesktop Studio

Studio 包含您可以在指令碼中使用的內建函數。在 Snippet editor 視窗中鍵入時,彈出的自動完成清單中提供了部分內建函數。還有其他一些內建函數沒有出現在這個清單中,但您仍然可以使用它們。有關所有可用內建函數的詳細資訊,請參閱本頁後半部分。

本頁還提供了按類別分組的內建函數清單。當您知道正在處理的資料類型和想要實現的目標,但不知道函數名稱時,這樣可以更容易地找到函數。您可以檢視允許您執行以下動作的函數清單:

還有一個包含其他函數的清單,這些函數無法歸入某個類別。

您可以在 函數幫助頁面了解更多關於使用 Studio 中函數的資訊,包括建立自己的自訂函數。

本頁面不提供與 RestProxy(您可以用來將指令碼連接到 RESTful API 的服務)一起使用的內建函數的相關資訊。這些函數在 RestProxy 幫助頁面中有所介紹。

嘗試一下

下載函數範例指令碼,然後 將其匯入 Studio。本說明頁面中的範例可在範例指令碼中的 Snippet 動作中找到。您可以打開 Snippet editor 視窗並運行 偵錯程式,查看每個範例如何工作。

與日期和時間一起使用的函數

在指令碼中使用以下日期和時間函數。Studio支援 24 小時製時間,非 12 小時製時間。在指令碼中處理時間時請考慮這一點。

OLE 自動化日期是一個以浮點數書寫的日期。小數點的左側為 1899 年 12 月 30 日零點之後的天數。小數點右側為當天時間除以 24。例如,1899 年 12 月 31 日上午 6:00 為 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)

返回指定 value中指定 base 的對數。兩個參數均指定為以 10 為底的數字。

round(value)

將指定的value捨入至最接近的整數。

sgn(value)

返回表示指定value的符號的值。如果value小於零,則返回 -1;如果value等於零,則返回 0;如果value大於零,則返回 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()

確定動態資料對象或對象的屬性是否為 null(未定義或 0)。

savetodb(1or0) 允許將變數值儲存到資料庫。
screenpop()

返回一個值,指示變數是否設定了 ScreenPop 標誌。

setscreenpop(1or0)

如果當前ACD 技能Closed 用於基於客服專員技能、能力和知識的互動的自動化傳遞已啟用使用螢幕彈出畫面,則允許在螢幕彈出畫面Closed 可配置的彈出式視窗,包含有關聯絡人的資訊。 它在某個事件後出現在客服專員的螢幕上,通常在客服專員連接到某個聯絡人時。中使用變數值。此功能不適用於數位指令碼。如果您想在數位指令碼中使用螢幕彈出畫面,請使用POPURL動作RUNAPP 動作CXone Studio中的説明頁面:POPURL動作RUNAPP 動作

setscreenpop()不是真正的函數。這是Studio中變數的屬性,可以在處理螢幕彈出畫面Closed 可配置的彈出式視窗,包含有關聯絡人的資訊。 它在某個事件後出現在客服專員的螢幕上,通常在客服專員連接到某個聯絡人時。時進行設定。處理 Snippet 時,可以將其應用於變數。您還可以在使用Assign動作建立時進行設定。

在參數為 1 的變數中新增setscreenpop(),將變數值傳遞給螢幕彈出畫面。

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 自動化日期時間。字串內容必須符合 Windows 標準 日期格式之一,如 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 表示星期日。字串內容必須符合 Windows 標準日期格式中的一種,如 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 自動化日期/時間。該變數必須包含一個表示日期/時間的有效字串。來源時間基於 租戶Closed 用於管理 CXone 環境的技術支援、計費和全域設定的高級組織分組 時區或透過 Timezone 動作設定的時區(CXone Studio中的說明頁面:Timezone 動作

當與數字運算式一起使用時: 函數將值轉換為已轉換為 GMT 或 UTC 的日期/時間字串。例如:「Mon, 03 Oct 2022 13: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 調用返回的物件或從 虛擬客服機器人Closed 代替真人客服專員處理客戶互動的軟體應用程式。動作返回的物件。

asjson()函數會將物件中的所有內容轉換為帶雙引號的字串,包括數值或布爾Closed 具有兩種可能值的子了類型:true 和 false。值。如果您需要在 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 自動化Closed 一種將日期寫成浮點整數的方法。 表示自 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 自動化Closed 一種將日期寫成浮點整數的方法。 表示自 1899 年 12 月 30 日以來的天數。日期/時間。value 的解釋由 unit 決定。如果value為負數,則將valuedate減去。

最佳做法是輸入一個有效的日期/時間變數,如下例所示,其中 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 自動化Closed 一種將日期寫成浮點整數的方法。 表示自 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 AMdate2 的變數為 10/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 自動化編號Closed 一種將日期寫成浮點整數的方法。 表示自 1899 年 12 月 30 日以來的天數。unit 指定要返回的日期部分。此函數必須調用一個日期/時間變數。如果您在函數中輸入日期/時間值,它將不適用。

可以選擇的單位是: yearmonthdayhourminuteseconddow

unit區分大小寫。用雙引號或單引號括起 unit,或傳遞一個包含 unit 的變數。如果傳遞變數,請不要將變數用引號或大括號括起來。

如果函數因意外輸入不正確而無法完成,則預設輸出為 December 30, 1899。

在子串中使用時

返回指定 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)

返回日期/時間值。如果函數因意外輸入不正確而無法完成,則預設輸出為 December 30, 1899。

在子串中使用時:返回已格式化為標準日期/時間的日期/時間。

用作數字運算式時:返回 OLE 自動化Closed 一種將日期寫成浮點整數的方法。 表示自 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 自動化編號Closed 一種將日期寫成浮點整數的方法。 表示自 1899 年 12 月 30 日以來的天數。。 如果函數因意外輸入不正確而無法完成,則預設輸出為 December 30, 1899。

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)

返回指定 value中指定 base 的對數。兩個參數均指定為以 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中變數的屬性。處理 Snippet 時,可以將其應用於變數。您還可以在使用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中變數的屬性,可以在處理螢幕彈出畫面Closed 可配置的彈出式視窗,包含有關聯絡人的資訊。 它在某個事件後出現在客服專員的螢幕上,通常在客服專員連接到某個聯絡人時。時進行設定。您可以在處理 Snippet 時將它們應用到變數中。您還可以使用Assign 動作進行設定。

在參數為 1 的變數中新增setscreenpop(),將變數值傳遞給螢幕彈出畫面。

在變數中新增screenpop(),以檢查是否設定了 ScreenPop 標誌。該屬性為 true 時返回 1,為 false 時返回 0

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

sgn(value)

返回表示指定value的符號的值。如果value小於零,則返回 -1;如果value等於零,則返回 0;如果value大於零,則返回 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 也可以在 snippet 中使用,以將變數轉換為陣列。以這種方式使用它會變更變數的內容。

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 編碼標準編碼的變數內容。例如,螢幕彈出視窗Closed 可配置的彈出式視窗,包含有關聯絡人的資訊。 它在某個事件後出現在客服專員的螢幕上,通常在客服專員連接到某個聯絡人時。的 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()