表現
表現とは、スクリプトの中にある、値を比較したり、値を返したりするものすべてを指します。例えば、
前述の例は、いずれも代入ステートメントの可能性もあります。代入ステートメントは、等号の右側の値を左側の変数に代入します。変数の代入は式ではありません。
式を使用して次のことが可能です。
- 数学的または代数的な計算を行う。
- 2つの値を比較し、その結果に基づいてアクションを行う。
- 式がtrueとfalseのどちらに評価されるかに基づいて論理的な判断を下す。
式で比較される値は、文字、数字、またはその両方の組み合わせで構成されます。また、変数を含めることもできます。Studioでは、数値、文字列、ブーリアンの3種類の式があります。
試してみる
式の例スクリプトをダウンロードしてStudioにインポートします。このヘルプページの例の多くは、サンプルスクリプトの
数値式
数値式には、数字と数学演算子またはブーリアン演算子(例:+、-など)のみが含まれます。また、変数が計算で使用する数値を保持している場合は、変数参照を含めることもできます。
数値式はスニペットで使用され、Studioアクションのプロパティを設定するために使用されます。例えば、IFアクションでは、Expressionプロパティに、アクションの意思決定メカニズムとして評価される式を設定します。
数値式の構文
数値式で使われる変数は中括弧や二重引用符で囲まないでください。囲んだ場合、スクリプトエラーが発生します。
数値式の評価
数値式では、スクリプトが数値を数値として評価できる場合は、数値として評価されます。これは次のことを意味します:
- 文字や単語など、数値として評価できないものはすべて変数参照とみなされます。
- 式中の非数値文字が、文字列値を持つスクリプト内の変数である場合、スクリプトは非数値文字を無視して元の式の数値部分を評価します。
- 式中の非数値文字が数値を持つ変数である場合、スクリプトはその値を式の評価に含めます。
- 式中の非数値文字がスクリプトの変数でない場合、スクリプトは元の式中のそれらの文字を無視します。
次の例では、nextNumは数値として評価できないため、スクリプトはこれを変数として評価しようとします:c1 = 123 + 456 + nextNum。以下の例は、nextNumが変数であるかどうか、またその値が何であるかに応じて、3つのシナリオの結果を示しています。
nextNumが文字列値を持つ変数の場合、結果はc1 = 579です。
ASSIGN nextNum = "my string"
ASSIGN c2 = 123 + 456 + nextNum
nextNumが数値を持つ変数の場合、結果はc2 = 1368です。
ASSIGN nextNum = 789
ASSIGN c3 = 123 + 456 + nextNum
nextNumが変数でない場合、結果はc3 = 579です。
ASSIGN c3 = 123 + 456 + nextNum
ともに文字列値として扱われる数値を保持する2つの変数を含む式を評価する場合、スクリプトは値を数値に変換し、それに従って評価します。この例では、結果はc4 = 50です。
ASSIGN nextNum = "20"
ASSIGN otherNum = "30"
ASSIGN c4 = nextNum + otherNum
数値式を中括弧で囲んで文字列値に含めることができます。例:
ASSIGN nextNum = 6
ASSIGN otherNum = 7
ASSIGN c5 = "There are {nextNum + otherNum} fish in the aquarium."
先行ゼロを含む数字
数字が文字列として扱われる場合と、数値として扱われる場合とでは、Studioによる数字の処理方法が異なります。数値が文字列として扱われる場合、先頭にゼロを持つことがあります。先行ゼロを持つ数値の文字列値を保持する2つの変数を加算すると、先行ゼロは削除されます。例えば、次の式の結果はc6=59です。
ASSIGN nextNum = "00020"
ASSIGN otherNum = "000039"
ASSIGN c6 = nextNum+otherNum
結果の値に先行ゼロが必要な場合は、関数
文字列式
文字列式には、英数字と特殊文字(#、@など)を含めることができます。文字列式の構文は、変数に文字列値を代入する構文と似ています。
- スニペットでは、式の文字列値は必ず一重引用符または二重引用符で囲む必要があります。これは文字列値の場合と同じです。
- 文字列式で変数置換を行うには、変数名を波括弧で囲みます。
- 二重引用符のような一部の文字はコードとみなされます。これらの文字を文字列値に含めるには、エスケープシーケンスを使用する必要があります。
文字列の比較
文字列はブーリアン式の値として評価することができます。例えば、次の式を
customer = "Grendel Cainson"
顧客に正確な値Grendel Cainsonが含まれている場合、結果はtrueになります。その他の値の場合、結果はfalseになります。
文字列の比較では、大なり小なり演算子を使うことができます。この種の比較では、各文字に値が割り当てられます(A = 1、Z = 26)。スクリプはまず最初の文字を比較し始めます。異なる場合は、アルファベットの後方の文字から始まる方が大きくなります。例えば、apple > bananaという比較の場合、結果はfalseです。これは、
最初の文字が同じ場合、スクリプトは2番目の文字を比較します。もし違う場合、比較はそこで止まります。2番目の文字も同じ場合、スクリプトは異なる文字のペアに達するまで文字の比較を続けます。例えば、grapes > grapeyという比較では、スクリプトが各文字を最後まで比較します。結果はfalseとなり、これはアルファベットで
大小比較にも同じルールが適用されます。演算子の左辺の文字列が右辺の文字列と同じであるとスクリプトが判定した場合、式はtrueと評価されます。
文字列比較では大文字と小文字が区別されます。
文字列のエスケープシーケンス
Studioは文字列定数内のエスケープシーケンスをサポートします。エスケープシーケンスを使用すると、文字列に特定の特殊文字を含めることができます。二重引用符や中括弧のような文字はコードとして認識されます。これらが文字列に含まれる場合、コンパイラはその意味をリテラル値ではなく非リテラルのコードとして解釈します。エスケープシーケンスを使用すると、文字列にこれらの文字を含めることができます。これらの文字をエスケープシーケンスなしで文字列に含めると、期待した出力が得られず、エラーになることがあります。
変換済みのXMLまたはJSONを含む文字列にエスケープシーケンスを追加する必要はありません。エスケープシーケンスが必要な文字には、自動的にエスケープシーケンスが追加されます。
エスケープシーケンスを使用する文字列の前にはドル記号($)を付けます:$"..."。二重引用符内では、次のいずれかのエスケープシーケンスを使用できます。
シーケンス | 詳細 |
---|---|
|
二重引用符を埋め込みます。 |
|
一重引用符を埋め込みます。 |
|
タブを埋め込みます(ASCII 9)。 |
|
キャリッジリターンを埋め込みます(ASCII 13)。 |
|
ラインフィードを埋め込みます(ASCII 10)。 |
|
バックスペースを埋め込みます(ASCII 8)。 |
|
開く中括弧を埋め込みます。閉じ中括弧をエスケープする必要があるのは、その前のテキストにエスケープされた開く中括弧がない場合だけです。閉じ中括弧をエスケープする必要がある場合、次のようになります: |
|
nullを埋め込みます(0はゼロです)。 |
次の例は、\nエスケープシーケンスを使って文字列に改行を追加しています。これにより、カーソルは行頭に戻ることなく次の行に移動します。
x = $"A phrase\nAnd a new line"
文字列がプリントされると、出力は次のようになります。
A phrase
And a new line ]
前の例では、閉じ角括弧がカーソルを表しています。
次の例は、\"エスケープシーケンスを使って文字列に二重引用符を追加しています。
y = $"Embedding \"double quotes\" in a string."
文字列がプリントされると、次のようになります:Embedding "double quotes" in a string.エスケープシーケンスがなければ、スクリプトはdoubleという単語の前の二重引用符までの文字列のみを認識します。
次の例は、\{ エスケープシーケンスを使って文字列にリテラルの中括弧を追加しています。
z = $"Using \{curly} braces."
文字列がプリントされると、次のようになります:Using {curly} braces.エスケープシーケンスがない場合、スクリプトは
ブーリアン式
Studioでは、ブーリアン trueとfalseの2つの値を持つデータ型。式の使用がサポートされています。ブール式はスクリプト内で意思決定ロジックを作成するために使用できます。ブーリアン式はtrueかfalseのどちらかで評価されるため、どちらのパスを取るかを決定するために満たす必要のある条件を作成することができます。条件が満たされれば、スクリプトはそのブランチを取り、満たされなければ別のブランチを取ります。
ブーリアン式ではいくつかの演算子を使用できます。これにより、スクリプトのニーズに合った論理条件ステートメントを定義することができます。例えば、ある値が他の値と同じかどうかを調べるには等号(=)を使い、他の値より大きいかどうかを調べるには大なり演算子(>)を使います。
ブーリアン式は、IfやSnippetなどのアクションで使用できます(CXone Studio:IfおよびSnippetのヘルプページを参照)。スニペットで使用できるステートメントの多くは、ブーリアン式を意思決定のメカニズムとして使用しています。
- IF
- IF ... ELSE
- SELECT
次の例では、スニペットの
ASSIGN var1 = "Cat"
IF var1 = "Dog"
{
ASSIGN dogWasFound = true
}
ELSE
{
ASSIGN dogWasFound = false
}
ブーリアン式は、アクションを使ったスクリプトの作成にも使用できます。次の画像は、Studioアクションを使った同じ
設定を有効または無効にするブーリアン値
CXoneの設定を有効または無効にするために、スクリプトでブーリアン値が使われることがあります。このような場合、変数にブーリアン値を代入します。設定を有効にするには、trueまたは1の値を代入します。設定を無効にするには、falseまたは0の値を代入します。
ブーリアン値には単語と数字の両方を使用できます。ただし、使用しているStudioアクションのオンラインヘルプを参照し、アクションのプロパティに推奨される値があるかどうかを確認してください。いずれの場合も、使用する値を引用符で囲むことはできません。値を引用符で囲むと、スクリプトはこれをブーリアン値ではなくリテラル文字列として処理します。
オペレータ
演算子は、数学演算や比較を表す記号です。+、-、=などの記号が演算子です。ブーリアン演算子は、2つの式を比較して、その結果をtrueまたはfalseとして返します。スニペットは、数学演算子とブーリアン演算子の両方をサポートしています。
加減乗除の通常の数学演算子に加えて、以下の演算子を使用できます。
- モジュロ演算子(%)
- べき乗/指数(^)
- 整数除算(\)
- 排他的論理和(~)
すべての式に、通常の数学的演算順序が適用されます。括弧内のものはサブユニットとして最初に評価されます。指数/べき乗演算子は2番目に評価されます。そして次に乗算と除算、その後に加算と減算が評価されます。比較演算子は、すべての数学演算が終了した後、最後に評価されます。
ブーリアン演算
スニペットで次のブーリアン演算子を使用できます。これらの演算子はすべて、
演算子記号 | 演算子名 | 詳細 |
---|---|---|
= | 等しい | 式の両辺が等しい場合、式の結果は |
!= | 等しくない | 式の両辺が等しくない場合、式は |
> | より大きい |
式の右辺が左辺より小さい場合、式の結果は |
>= | 以上 |
式の右辺が左辺と等しいかそれより小さい場合、式の結果は |
< | 未満 |
式の左辺が右辺より小さい場合、式の結果は |
<= | 以下 |
式の左辺が右辺と等しいかそれより小さい場合、式の結果は |
& | および | すべての部分式がtrueと評価される場合、式全体の結果は |
| | または | いずれかの部分式がtrueと評価される場合、式の結果は |
式中の等号
等号演算子(=)は、扱う式の種類によって意味が異なります。
代入ステートメントで使われる式は、ある式を変数の値に代入します。これらのステートメントで使われる等号は、式の右辺の値を左辺の変数に代入することを表します。
他の式では、等号は等しいかどうかの評価を示します。例えば、x = 3 * (5 + 10)という代数式にある等号は、xが代数式3 * (5 + 10)の結果の値を表すことを意味します。この場合、x = 45です。この代数式を代入ステートメントに使って、式の値を変数xに代入することができます。しかし、同じ式をブーリアン値として使用した場合、xの値に応じてtrueかfalseのどちらかに評価される。
ブーリアン式はStudioスクリプトでよく使われます。これらの式の演算子として等号を使用すると、等号の左辺の値と右辺の値を比較して等しいかどうかが判断されます。ブーリアン式で使用される変数の値を変更する必要がある場合、ASSIGNアクションか、SnippetアクションのASSIGNステートメントを使用します。