エクスプレッション

このセクションでは、ロボットのエクスプレッションおよびその編集方法や評価方法について説明します。

ベーシック エンジン ロボットの式については、「エクスプレッション」を参照してください。

次のトピックでは、式のさまざまなコンポーネントと式エディターについて説明します。

関連項目: オーバーライド式

プロパティ

ロボットのステップのプロパティの多くは、プレーン値 (数値など) または式として指定できます。

式は評価され、この評価の結果は、プレーン値がプロパティの値として直接利用されるプロパティに対して使用されます。たとえば、クリック ステップのカウント プロパティには 2 などの数値を指定できますが、clickCount などのエクスプレッションとして指定することもできます。clickCount はステップの範囲内で定義された変数であり、ロボットの他の場所で値が与えられます。

ロボットの式は、Java、C#、JavaScript などの最も一般的なプログラミング言語の式と非常によく似ています。式は定数、変数、演算、および関数で構成されます。エクスプレッションの例を以下に示します:

  • (1 + 2)*3

  • x > 0 || x <= 6

  • max(x, 10)

  • "hello".substring(3)

式には「タイプ」があります。つまり、演算と関数は特定のタイプのオペランドにしか適用されないことを意味します。

オペランドの型によっては、評価されるときに特定の型の値を返します。たとえば、整数タイプの 2 つのオペランドを加えると、1 + 2 のように整数タイプの結果が得られ、3 と評価されます。

オペランドのタイプが数値の場合は結果が数値タイプとなり、たとえば 1.0+2.0 は、3.0 と評価されます。エクスプレッションが評価され、エクスプレッションのタイプ エラーがロボットでエラーとして報告される前に、エクスプレッションのタイプの静的チェックが行われます。

Management Console では、タイプ エラーにより、ロボットは実行の開始時に失敗します。たとえば、数値を含む式を使用しており、"whatvalue".number のようにアルファ値でコーディングを行った場合、この文字列は数値に変換されません。

エクスプレッションの評価によってワークフローの状態が変わることはありません。つまり、ユーザーはエクスプレッションの中の変数に値を割り当てることはできません。変数に値を割り当てることができるのはステップだけです。たとえば、変数割り当て ステップによって変数に値が割り当てられ、この値はエクスプレッションの評価から得られたものとなります。

定数

定数内の式のタイプ

エクスプレッション内の定数値は、次のタイプになります。

タイプ

整数

演算子:+, -, *, /, %

42

-17

数値

演算子:+, -, *, /, %

3.14159

-.33

ブール値

演算子:&& (and), || (or)

TRUE

FALSE

テキスト

「テキスト」

式エディターで有効な結果を得るには、開始引用符と終了引用符が必要です。

例:

「Hello」は Hello という出力を提供します

「First」は First という出力を提供します

テキストを引用符で囲んで出力するには、テキストの先頭と末尾の引用符に特殊文字 \ を使用します。

例:

"<tag key=\"Value\"/>"

出力は次のようになります。

<tag key="Value">

テキスト値の特殊文字」を参照してください。

実行情報:

$executionInfo は次の 2 つの値を提供します。

  • robotName

  • executionID

ロボットの式で使用します。

式エディターで次のように記述します。

$executionInfo.robotName または

$executionInfo.executionID

[ロボットを呼び出す] ステップの場合は、プライマリ ロボットのロボット名と実行 ID が自動的に含まれます。

ロボットがベーシック エンジン ロボットから呼び出された場合は、呼び出し元ロボットの名前を返します。

$executionInfo (読み取り専用)

「FindJSONObject.robot」

「DesignStudio_982dbd7b00000005」

実行情報:

定数

共有定数には、式エディターで $executionInfo 定数を JSON オブジェクトとして使用してアクセスします。

ロボットの式に $executionInfo.constants が含まれている場合、ロボットは式エディター内の共有定数にアクセスします。

Management Console への接続がない場合、または Management Console に定数が定義されていない場合、JSON オブジェクトの値は空になります。

Management Console 内の定数を追加、表示、および変更するには、「定数」を参照してください。関連項目: JSON のステップ

現在のフロー ポイントがどこであっても、実行時には定数の [完了] オプションが使用可能になります。

Management Console で定数が更新された場合は、Design Studio の Management Console を更新し、ロボットの実行を再起動してロボット内の定数を更新する必要があります。

$executionInfo.constants (読み取り専用)

定数値は常に JSON 文字列として表されます。テキスト、整数などの値を取得するには、次のような変換関数を使用します。

  • .text()

  • .integer()

  • .boolean()

テキスト値の特殊文字

バックスラッシュ記号 (\) は通常、エクスプレッションで直接記述できないテキスト値の特殊文字に用います。次の表に使用可能な特殊文字を示します。

文字

説明

\n

改行

組み込みブラウザで改行を使用するには、以下を使用します。

\r\n

\r

キャリッジ リターン

\f

フォーム フィード

\"

二重引用符

\t

タブ

\b

バックスペース

\\

バックスラッシュ 1 文字になります

\uXXXX

16 進数でコード化された Unicode 文字。

例:

"\u002A""*" を表す別の方法です。

変数

エクスプレッションの変数は、エクスプレッションのロケーションでスコープ内のワークフローに定義された任意の変数または入力パラメータとなります。

  • 入力パラメータのスコープはワークフロー全体となるため、そのパラメータは常にスコープ内となります。

  • ワークフローの最上位レベルで定義されている場合、または グループ ステップ 内にある場合、変数はスコープ内となります。

演算

演算は、演算子と複数のオペランドから構成されるエクスプレッションです。

1+2 というエクスプレッションでは、+ が演算子で、12 がオペランドです。したがって、演算子は、エクスプレッションが評価されるときにオペランドの値に対して実行される演算を定義します。

次のトピックでは、式内の演算子について説明します。

算術演算子

エクスプレッションは、加算 (+)、減算 (-)、乗算 (*)、除算 ( / )、およびモジュロ (%) に対応しています。各演算は、整数タイプと数値タイプの任意の組み合わせを持つことができる 2 つのオペランドを取ります。オペランドに 1 つ以上の数値タイプが含まれている場合、結果タイプも数値になります。それ以外の場合は整数タイプになります。

加算演算 (+) を用いるとき、オペランドの 1 つがテキストで、もう 1 つのオペランドが整数、数値、ブール タイプまたはテキスト タイプの場合、結果タイプはテキストになります。

たとえば、"a" + 1 は、テキスト "a1" と評価されます。

テキスト タイプではないオペランドの値がテキストに変換され、2 つのオペランドの値が結果のテキストに連結されます。

減算演算 - は、x が整数タイプまたは数値タイプである場合に、-x のように負の数値として用いることができます。

演算子 % はモジュロ演算子、または剰余演算子と呼ばれます。この演算子は 2 つのオペランドを除算した後の余りを返します。たとえば、5 % 21 を返します。より正確には、次のように数学的に定義されます:

x % y = x - trunc(x / y) * y
where
trunc(x) = sgn(x) * floor(|x|)

算術演算を評価すると、エラーまたは例外がスローされることがあります。これは、数値が大きすぎる場合のオーバーフローなど、結果が数値の制限を超えている場合に、加算、減算、乗算、および除算の演算で発生する可能性があります。この場合、OverflowIssue 例外がスローされます。第 2 オペランドの値がゼロの場合、除算と剰余演算子は DivisionByZeroIssue エラーをスローします。

例:

  • 17 % 21 と評価されます。

  • -17.3 % 2.0-1.3 と評価されます。

等価演算子

ワークフロー式では 2 つの等価演算子を使用します。

  • == 値が別の値と等しいかどうかを判定します。

  • != 1 つのオペランドの値が別のオペランドの値と等しくないかどうかを判定します。

これらの演算子は、あらゆるタイプのオペランドで動作しますが、オペランドのタイプは同じである必要があります。たとえば、数値を整数と比較することはできません。

関係演算子

関係演算子は、一方のオペランドが他方のオペランドより小さいか大きいかを判定します。オペランドは Integer、Number、Date、Time、DateTime タイプの数値である必要があります。エクスプレッション内のオペランドのタイプは同一である必要があります。

演算子

説明

<

未満

<=

以下

>

より大きい

>=

以上

論理演算子

次のような 2 つの二項 (2 つのオペランドを取るもの) 論理演算子を使用できます。AND (&&) と OR (||)。次のような 1 つの単項演算子 (1 つのオペランドを取るもの) を使用できます。NOT (!)。これらの演算子はブール タイプのオペランドに対して定義され、リターン タイプはブール タイプになります。

  • && 演算子は、両方のオペランドの値が TRUE であれば TRUE を返し、それ以外の場合には FALSE を返します。

  • || 演算子は、オペランドの値のうち 1 つまたは両方が TRUE であれば TRUE を返し、両方が FALSE の場合には FALSE を返します。

  • ! 演算子は、オペランドの値が FALSE の場合は TRUE を返し、オペランドが TRUE の場合は FALSE を返します。

&& および || 演算子の評価は、他の多くの演算子の評価とは若干異なります。通常はオペランドの評価が実行される前にすべてのオペランドが評価されますが、&& および || 演算子については、第 1 オペランドが最初に評価されます。演算子の結果を判断するのに十分であれば、2 番目の引数は評価されません。

たとえば、x==1 || x==2 において、x が 1 の場合、エクスプレッションの 2 番目の部分 (x==2) は評価されません。

条件付き演算子

条件付き演算子は 3 つのオペランドを取り、次のような形になります。

<Op>?<Op>:<Op>

ここで、<Op> は制限付きの任意のオペランドです。

たとえば、x の値が 1 である場合、x==1?0:10 となり、それ以外の場合は 1 になります。

第 1 オペランドのタイプはブール タイプである必要があり、他の 2 つのオペランドは任意のタイプにすることができますが、同じである必要があります。

条件付き演算子の評価は、他の多くの演算子の評価とは若干異なります。条件付き演算子の場合、最初に第 1 オペランドが評価され、その値に応じて、他の 2 つのオペランドのうちの 1 つだけが評価されます。第 1 オペランドが TRUE (または FALSE) の場合、第 2 (または第 3) のオペランドが評価され、結果がこの評価の結果になります。評価されていないオペランドでエラーが発生した場合、例外はスローされません。

たとえば、x == 0.0? で、1.0: 1/ⅹ であり、x0.0 という値がある場合、1/x は評価されず、DivisionByZeroIssue 例外はスローされません。

演算子の概要

次の表に、式演算子の一覧を示します。

2 番目のオペランドの値としてゼロを使用する除算演算子または剰余演算子を使用する式では、例外が発生します。Management Console では、ロボットは実行の開始時に失敗し、エラーが表示されます。

演算子

説明

+

加算またはテキスト連結

1+2

"hello " + name

-

減算または否定

1-2

5-2.9

-5

*

乗算

42*2

1.0*17

/

除算

1/2

1/2.0

%

剰余演算

x % 2

2.5 % 1.0

==,!=

等しい、等しくない

true == false

x != 0

<,<=

未満、以下

0 < 1

1.0 <= 0.0

>,>=

より大きい、以上

0 > 1

1.0 >= 0.0

&&,||

論理 AND、論理 OR

true || x

false && y

!

論理 NOT

!true

_?_:_

条件付き演算子

x>0? x: 0

( )

評価の順序

1+2*3 は 7 と評価されますが、次のように丸括弧を挿入すると(1+2)*3 は、隣接する演算子の前で括弧の内容が評価されるため、結果は 9 に変わります。

関数

式には、関数呼び出しを含めることもできます。次の方法で関数を呼び出します。

  • f(<Op>,…,<Op>) などの直接関数呼び出し (例: max(1,2))。

  • <Op>.f(<Op>,…,<Op>) などのメソッド関数呼び出し (例: 1.max(2))。

この 2 つの方法には次のような関係性があります。

<Op1>.f(<Op2>,...,<Opn>) は f(<Op1>,...,<Opn>) と同じです。

オペランドは特定のタイプを持つ必要があり、結果タイプはオペランドのタイプに応じて異なる点において、関数は演算子に似ています。たとえば、2 つの数値で最大値を決定する関数 max は、整数タイプまたは数値タイプのオペランドで呼び出すことができ、戻り値のタイプはオペランドのタイプと同じになります。

評価中、関数が想定外の不正なオペランド値を取得すると、IncorrectValueIssue 例外がスローされます。

次のトピックでは関数について説明します。

数値関数

関数

結果タイプ

abs(Integer)

整数

abs(-5) は 5 を返します。

abs(Number)

数値

abs(-2) は 2 を返します。

ceil(Number)

整数

指定された数値以上の最小の整数を返します。

ceil(2.4) は 3 を返します。

computeMD5(binary: Binary)

テキスト

バイナリ入力の MD5 チェックサムを計算します。

MD5 は安全なハッシュ機能とは見なされていないため、機密情報の保護には使用しないことをお勧めします。

floor(Number)

整数

指定された数値以下の最小の整数を返します。

floor(8.7) は 8 を返します。

round(Number)

整数

算術規則に基づいて、指定された数値よりも大きいまたは小さい最小の整数を返します。

round(1.4) は 1 を返します。

round(1.6) は 2 を返します。

trunc(Number)

整数

小数部を含まない数値を返します。

trunc(4.8732) は 4 を返します。

max(Integer, Integer)

整数

max(4, 9) は 9 を返します。

max(Number, Number)

数値

max(12, 99) は 99 を返します。

min(Integer, Integer)

整数

min(23, 47)は 23 を返します。

min(Number, Number)

数値

min(15.01, 32.5)は 15.01 を返します。

pow(Integer, Integer)

整数

整数 (最初のパラメータ) をべき乗 (2 番目のパラメータ) した値を返します。

pow(5, 2) は 25 を返します。

指数が負の値である場合、または最大整数値 (2147483647) より大きい場合、この関数は IncorrectValue 例外を返します。

この関数が大きな数値を計算する場合、評価に長い時間がかかることがあります。

pow(Number, Integer)

数値

数値 (最初のパラメータ) をべき乗 (2 番目のパラメータ) した値を返します。

pow(5.2, 2) は 27.04 を返します

指数が負である場合、または 999999999 より大きい場合、この関数は IncorrectValue 例外を返します。

この関数が大きな数値を計算する場合、評価に長い時間がかかることがあります。

random()

数値

0.0 以上 1.0 未満の乱数を返します。

random()

random(Integer, Integer)

整数

第 1 オペランドの値以上、第 2 オペランドの値以下のランダムな整数を返します。

Random(5, 96)

sqrt(Integer)

数値

整数の平方根を返します。

sqrt(64) は 8.0 を返します

整数が負である場合、この関数は IncorrectValue 例外を返します。

sqrt(Number)

数値

数値の平方根を返します。

sqrt(64) は 8.0 を返します

整数が負である場合、この関数は IncorrectValue 例外を返します。

テキスト関数

関数

結果タイプ

after(Text, Text)

テキスト

サブテキストが最初に現れた場所の後にあるテキストを返します。

"abcdbc".after("bc")dbc を返します。

サブテキストが見つからない場合、この関数は例外を返します。

ampersandDecode(Text)

テキスト

ampersandDecode("&gt;")> を返します。

ampersandEncode(Text)

テキスト

ampersandEncode(">")&gt; を返します。

base64Decode(Text)

バイナリ

base64Decode("SGVsbG8=").text("UTF8")Hello を返します。

before(Text, Text)

テキスト

指定したサブテキストが最初に現れた場所の前にあるテキストを返します。

"abcdbc".before("bc")a を返します。

サブテキストが見つからない場合、この関数は例外を返します。

binary(Text, Text)

バイナリ

テキスト値をバイナリに変換します。

"Hello".binary("UTF8")

boolean(Text)

ブール値

テキストは「true」または「false」のいずれかになります。

boolean("true") は、ブール型の「true」を返します。

capitalize(Text)

テキスト

各単語の最初の文字が大文字で、残りの文字が小文字であるテキストを返します。

capitalize("hello world")Hello World を返します。

contains(Text, Text)

ブール値

テキストに指定したテキストが含まれていることを確認します。

contains("I have found it", "have")true を返します。

endsWith(Text, Text)

ブール値

endsWith("Why portraits have fascinated us for millennia", "millennia")true を返します。

indexOf(Text, Text)

整数

indexOf("Why portraits have fascinated us for millennia", "millennia") は 37 を返します。

integer(Text)

整数

integer("7")は、整数型の 7 を返します。

isEmpty(Text)

ブール値

テキスト値が空かどうかを確認します。

isEmpty("")true を返します。

isEmpty("hello")false を返します。

lastIndexOf(Text, Text)

整数

指定したサブテキストが最後に現れた位置を返します。

"abcdbc".lastIndexOf("bc") は 4 を返します。

サブテキストが見つからない場合、この関数は -1 を返します。

length(Text)

整数

記号の数を計算して、テキストの長さを返します。

length("Hello") は 5 を返します。

matches(text: Text, regex: Text)

ブール値

テキストが正規表現に一致するかどうかをチェックします。

matches("My phone number is 123-45-678", "(.*)( \\d{3}-\\d{2}-\\d{3})")true を返します。

この関数の実行には、テキストと正規表現に応じて長い時間がかかることがあります。たとえば、テキストに余分なゼロを大量に入力すると、matches 関数が極めて長時間実行されます。

最後に A を 1 つ追加すると、matches("0000000000000000000000", "(0*)*A") のようにほぼ即座に true を返します。

エクスプレッションを変更するたびに、以前の評価が取り消され (まだ実行中の場合)、新しい評価が開始されます。

number(Text)

数値

number(987) は 987.0 を返します。

password(Text)

パスワード

テキストをパスワードに変換します。これは、ロボットの開発中にアプリケーションにログインする際にパスワードが必要な場合に役立ちます。セキュリティ上の理由から、この関数を本番環境で使用しないでください。

password("123abc!@")Password=074f4d84dfe28d... を返します。

removeNonPrintable(Text)

テキスト

印刷不可文字を含まないテキストを返します。

removeNonPrintable("Text with non-printable characters")

replaceAll(text: Text, regex: Text, replacement: Text)*

正規表現に一致するすべてのサブテキストを、指定された置換文字に置き換えます。

正規表現は、$ を使用した複数の一致検索および参照をサポートしています。

"345-84-7735".replaceAll(")345-84-7735 を返します。

円記号をエスケープする必要があることに注意してください。

startsWith(Text, Text)

ブール値

startsWith("To be or not to be", "To") は true を返します。

substring(Text, Integer)

テキスト

"workflow".substring(5)low を返します。

substring(Text, Integer, Integer)

テキスト

substring("DesignStudio",1,8)esignSt を返します。

toJSON(Text)

テキスト

toJSON("Hello") はテキストとして "Hello" を返します。

toLowerCase(Text)

テキスト

toLowerCase("START")start を返します。

toUpperCase(Text)

テキスト

toUpperCase("sun")SUN を返します。

trim(Text)

テキスト

テキスト文字列の両端から、スペースと空白文字をすべて削除します。

trim(" Let's start ")Let's start を返します。

unquote(text: Text)

テキスト

テキストから引用符を除去します。

"\"hello\"".unquote() は、二重括弧なしで hello を返します。

DateTime 関数

DateTime 関数の結果には、日付、時刻、タイム ゾーン ID、およびオフセットが含まれます。表現は指定されたパラメータに応じて異なります。デフォルトでは、特定のタイム ゾーンが手動で指定されていない場合、コンピューターのローカル タイム ゾーンが使用されます。これは、式が評価されるときに決定されます。

関数

結果タイプ

dateTime()

DateTime

現在の日付 (年、月、日)、時刻 (時、分、秒)、オフセット、および zoneID を返します。

dateTime(date: Date, time: Time)

DateTime

指定の日付と時刻を返します。

dateTime(date(2022, 1, 10), time(12, 0, 5)) は、日付 (年 = 2022、月 = 1、日 = 10)、時刻 (時 = 12、分 = 0、秒 = 5、ナノ秒 = 0)、zoneID = "[DateTime のタイム ゾーン]" を返します。

dateTime(date: Date, time: Time, zone: Text)

DateTime

指定した日付、時刻、およびタイム ゾーン ID またはオフセットを返します。

dateTime(date(2010,11,08), time(12,44,00), zoneId(Dublin))

dateTime(text: Text, pattern: Text)

DateTime

コンピュータのデフォルトのロケールを使用して、Text 値を DateTime 値に変換します。

dateTime("2022-01-02 12:30", "yyyy-MM-dd HH:mm")

dateTime(text: Text, pattern: Text, locale: Text)

DateTime

パターンとロケールを使用して、テキストから DateTime 値を作成します。

dateTime("January 1, 2022 12:30", "MMMM d, yyyy HH:mm ", "en-US").

dateTime(text: Text, pattern: Text, defaultDate: Date)

DateTime

パターンと、テキストに日付が含まれていない場合に使用するデフォルトの日付を使用して、Text 値を DateTime 値に変換します。

dateTime("12:30", "HH:mm", date())

ここで、日付は現在の日付です。

dateTime(text: Text, pattern: Text, dafaultDate: Date, locale: Text)

DateTime

パターン、デフォルトの日付、およびロケールを使用して、テキストから DateTime 値を作成します。パターンによってテキストと日付が一致する場合はロケールが使用され、デフォルトの日付は使用されません。テキストに日付が含まれていない場合は、デフォルトの日付が使用されます。

dateTime(text, "[MMMM d, yyyy] HH:mm", date(), "en-US")。ここで、text は抽出する日付を含む変数であり、date() は現在の日付です。パターンは両方のテキストに一致します。January 1, 2022 12:30 および 12:30。最初のケースでは、January1, 2022 という日付で DateTime 値が返されます。2 番目のケースでは、現在の日付で返されます。どちらの場合も、時刻は 12:30 です。

offset(dateTime: DateTime)

テキスト

DateTime 値のオフセットを返します。

offset(dateTime()) は、使用しているコンピュータにおける現在の日付のオフセットを +01:00 のような形で返します。

zoneId(dateTime: DateTime)

テキスト

DateTime 値のタイム ゾーンを返します。

zoneId(dateTime()) は、現在の日付の zoneID の値を Europe/Paris のような形で返します。

withYears(dateTime: DateTime, years: Integer)

DateTime

年を変更した日付と時刻を新たに返します。

dateTime(date(2021, 7, 20), time(12, 13, 14)).withYears(2022) は、年が 2022 である DateTime 値を返します。

withMonth(dateTime: DateTime, months: Integer)

DateTime

月を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withDay(dateTime: DateTime, days: Integer)

DateTime

日を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withHour(dateTime: DateTime, hours: Integer)

DateTime

時間を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withMinute(dateTime: DateTime, minutes: Integer)

DateTime

分を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withSecond(dateTime: DateTime, seconds: Integer)

DateTime

秒を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withNano(dateTime: DateTime, nanos: Integer)

DateTime

ナノ秒を変更した日付と時刻を新たに返します。例については、「withYears」を参照してください。

withOffset(dateTime: DateTime, offset: Text)

DateTime

指定したオフセットの日付と時刻を新たに返します。オフセットを変更すると、オフセットとゾーン ID が互いに矛盾しないように、ゾーン ID が変更される場合があります。

(オフセットが +1 の場合)

withOffset(dateTime(), "+3") は、オフセットが +3 の時刻を返します。これは、時刻が現在の時刻よりも 2 時間進んでいることを意味します。また、ゾーン ID は UTC +03:00 (ヨーロッパ/モスクワ) に変更されます。

withZoneId(dateTime: DateTime, zoneID: Text)

DateTime

指定したタイム ゾーンの日付と時刻を新たに返します。ゾーン ID を変更すると、ゾーン ID とオフセットが互いに矛盾しないように、オフセットが変更される場合があります。

withZoneId(dateTime(), "Europe/Moscow") は、指定されたゾーン ID における現在の時刻を返します。

plusYears(dateTime: DateTime, amount: Integer)

DateTime

指定した年数を加えた日付と時刻を新たに返します。

dateTime(date(2021, 7, 20), time(12, 13, 14)).plusYears(1) は、ロボットが実行されるタイムゾーンにおける、日時 2022-07-22 12:13:14.0 の DateTime 値を返します。

plusMonths(dateTime: DateTime, amount: Integer)

DateTime

指定した月数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusWeeks(dateTime: DateTime, amount: Integer)

DateTime

指定した週数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusDays(dateTime: DateTime, amount: Integer)

DateTime

指定した日数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。

plusDays(70) を使用した次の例では、3 月は 31 日、4 月は 30 日あるという前提に基づき、まず 3 月 4 日に 27 日を追加し、さらに残りの 43 日を追加して 5 月 13 日としています。

dateTime(date(2022, 3, 4), time(12, 13, 14)).plusDays(70) は、日付 (年 = 2022、月 = 5日 = 13)、時刻 (時 = 12、分 = 13、秒 = 14、ナノ秒 = 0)、zoneID = "[DateTime のタイム ゾーン]" を返します。

plusHours(dateTime: DateTime, amount: Integer)

DateTime

指定した時間数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusMinutes(dateTime: DateTime, amount: Integer)

DateTime

指定した分数を加えた日付と時刻を新たに返します。

dateTime(date(2022, 7, 20), time(12, 13, 14)).plusMinutes(7) は、日付 (年 = 2022、月 = 7、日 = 20)、時刻 (時間 = 12、分 = 20、秒 = 14、ナノ秒 = 0)、zoneID = "[DateTime のタイム ゾーン]" を返します

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。

plusSeconds(dateTime: DateTime, amount: Integer)

DateTime

指定した秒数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusNanos(dateTime: DateTime, amount: Integer)

DateTime

指定したナノ秒数を加えた日付と時刻を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

minusYears(dateTime: DateTime, amount: Integer)

DateTime

指定した年数を差し引いた日付と時刻を新たに返します。

dateTime(date(2022, 7, 20), time(12, 13, 14)).minusYears(10) は、ロボットが実行されるタイムゾーンにおける、日時 2012-07-22 12:13:14.0 の DateTime 値を返します。

minusMonths(dateTime: DateTime, amount: Integer)

DateTime

指定した月数を差し引いた日付と時刻を新たに返します。

dateTime(date(2022, 7, 20), time(12, 13, 14)).minusMonths(10) は、ロボットが実行されるタイムゾーンにおける、日時 2021-09-20 12:13:14 の DateTime 値を返します。

minusWeeks(dateTime: DateTime, amount: Integer)

DateTime

指定した週数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、「minusMonths」を参照してください。

minusDays(dateTime: DateTime, amount: Integer)

DateTime

指定した日数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。minusDays(20) を使用した次の例では、3 月は 31 日、2 月は 29 日あるという前提に基づき、まず 3 月 14 日から 14 日を差し引き、さらに残りの 6 日を差し引いて 2 月 23 日としています。

dateTime(date(2020, 3, 14),time(12, 13, 14)).minusDays(20) は、日付 (年 = 2020、月 = 2日 = 23)、時刻 (時間 = 12、分 = 13、秒 = 14、ナノ秒 = 0)、zoneID = "[DateTime のタイム ゾーン]" を返します。

minusHours(dateTime: DateTime, amount: Integer)

DateTime

指定した時間数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

minusMinutes(dateTime: DateTime, amount: Integer)

DateTime

指定した分数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

minusSeconds(dateTime: DateTime, amount: Integer)

DateTime

指定した秒数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

minusNanos(dateTime: DateTime, amount: Integer)

DateTime

指定したナノ秒数を差し引いた日付と時刻を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

yearsUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの年数を計算します。

dateTime(date(2022, 1, 20), time(12, 13, 14)).yearsUntil(dateTime(date(3785, 11, 20), time(12, 13, 14))) は 1763 を返します。

monthsUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの月数を計算します。

dateTime(date(2022, 1, 20), time(12, 13, 14)).monthsUntil(dateTime(date(2022, 11, 20), time(12, 13, 14))) は 10 を返します。

daysUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの日数を計算します。例については、「monthsUntil」を参照してください。

hoursUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの時間数を計算します。例については、「monthsUntil」を参照してください。

minutesUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの分数を返します。例については、「monthsUntil」を参照してください。

secondsUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの秒数を返します。例については、「monthsUntil」を参照してください。

millisUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までのミリ秒数を返します。例については、「monthsUntil」を参照してください。

nanosUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までのナノ秒数を返します。例については、「monthsUntil」を参照してください。

dayOfYear(dateTime: DateTime)

整数

年の日にちを返します。

dateTime(date(2022, 3, 1), time(12, 13, 14)).dayOfYear() は日 = 60 を返します

weeksUntil(from: DateTime, to: DateTime)

整数

最初の DateTime 引数から 2 番目の DateTime 引数までの週数を返します。

dateTime(date(2022, 1, 20), time(12, 13, 14)).weeksUntil(dateTime(date(2025, 11, 20), time(12, 13, 14))) は 200 を返します。

text(dateTime: DateTime)

テキスト

DateTime 値をテキスト表現に変換します。

text(dateTime()) は、たとえば 2022-02-10T13:46:56.907958+01:00 [ヨーロッパ/パリ] のような形式で現在の日付と時刻を返します。

text(dateTime: DateTime, pattern: Text)

テキスト

DateTime 値を、指定したパターンとロケールに一致するテキスト表現に変換します。パターンは、次のようなさまざまな方法で指定できます。

  • "d/M/yyyy HH:mm"

  • "d-M-yyyy HH:mm:ss"

(DateTime が 2022-12-20T00:30:00+03:00 の場合)

text("d/M/yyyy HH:mm")20/12/2022 00:30 を返します。

text(dateTime: DateTime, pattern: Text, locale: Text)

テキスト

指定したパターンとロケールに一致する、DateTime の日付と時刻のテキスト表現を返します。

  • パターンは、次のようなさまざまな方法で指定できます。

    • "d/M/yyyy HH:mm"

    • "d-M-yyyy HH:mm:ss"

    • "EEEE MMM d yy HH:mm" (EEEE は完全な曜日を、MMM は 3 文字に省略した月の名前を返します。その他も同様です)

  • ロケールは、en-USfr-FRja-JPru-RU のように指定します。

(現在の日付が 20.12.2021 00:30:00) である場合

text("EEEE MMM d yy HH:mm", "en-US")Monday Dec 20 21 00:30 を返します。

text("EEE MMMM d yyyy HH:mm", "en-US")Mon December 20 2021 00:30 を返します。

text("yyyy'年'MM'月'd'日' HH:mm:ss","ja-JP")2021年12月20日 00:30:00 を返します。

fromExcelDate(excelDate: Number)

DateTime

DateTime 値を数値として表現された Excel の日付に変換します。

(ExcelDate 値が 44969 の場合)

ExcelDate.fromExcelDate() は、year=2023、month=2、day=12 を返します。

toExcelDate(dateTime: DateTime)

Number

DateTime 値を数値として表現された Excel の日付に変換します。

(現在の日付が 08.02.2022 18:45:00 である場合)

dateTime().toExcelDate() は 44600.76050844907149439677596092224 を返します。

日付関数

関数

結果タイプ

date()

日付

現在の日付を返します。

date(year: Integer, month: Integer, day: Integer)

日付

指定した年、月、および日の日付を返します。

date(DateTime)

日付

以前に DateTime が指定されていた場合に、DateTime の日付値を返します。

date(text: Text, pattern: Text)

日付

パターンを使用して、Text 値を Date 値に変換します。

date("2022-01-02", "yyyy-MM-dd")

date(text: Text, pattern: Text, locale: Text)

日付

パターンとロケールを使用して、Text 値を Date 値に変換します。

date("January 1, 2022", "MMMM d, yyyy", "en-US")

year(date: Date)

整数

現在の日付の年を返します。

month(date: Date)

整数

現在の日付の月 (1 ~ 12) を返します。

day(date: Date)

整数

現在の日付の日 (1 ~ 31) を返します。

withYear(date: Date, years: Integer)

日付

年を変更した日付を新たに返します。

date(2022, 3, 4).withYear(2037) は、year = 2037、month = 3、day = 4 を返します。

withMonth(date: Date, months: Integer)

日付

月を変更した日付を新たに返します。 date(2022, 3, 4).withMonth(5) は、year = 2022、month = 8、day = 4 を返します。

withDay(date: Date, days: Integer)

日付

日を変更した日付を新たに返します。

date(2022, 3, 4).withDay(10) は、year = 2022、month = 3、day = 10 を返します。

plusYears(date: Date, amount: Integer)

日付

指定した年数を加えた日付を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusMonths(date: Date, amount: Integer)

日付

指定した月数を加えた日付を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusWeeks(date: Date, amount: Integer)

日付

指定した週数を加えた日付を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"plusDays" を参照してください。

plusDays(date: Date, amount: Integer)

日付

指定した日数を加えた日付を新たに返します。

どの「plus」関数でも、暦に基づく繰り越し計算が使用されます。plusDays(70) を使用した次の例では、3 月は 31 日、4 月は 30 日あるという前提に基づき、まず 3 月 4 日に 27 日を追加し、さらに残りの 43 日を追加して 5 月 13 日としています。

date(2022, 3, 4).plusDays(70) は、year = 2022、month = 5day = 13 を返します。

minusYears(date: Date, amount: Integer)

日付

指定した年数を差し引いた日付を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。

date(2022, 3, 14).minusYears(20) は、year = 2002、month = 3、day = 14 を返します。

minusMonths(date: Date, amount: Integer)

日付

指定した月数を差し引いた日付を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

minusWeeks(date: Date, amount: Integer)

日付

指定した週数を差し引いた日付を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。例については、"minusDays" を参照してください。

minusDays(date: Date, amount: Integer)

日付

指定した日数を差し引いた日付を新たに返します。

どの「minus」関数でも、暦に基づく繰り越し計算が使用されます。minusDays(20) を使用した次の例では、3 月は 31 日、2 月は 29 日あるという前提に基づき、まず 3 月 14 日から 14 日を差し引き、さらに残りの 6 日を差し引いて 2 月 23 日としています。

date(2022, 3, 14).minusDays(20) は、年 = 2022、月 = 2日 = 23 を返します。

yearsUntil(from: Date, to: Date)

整数

最初の Date 引数から 2 番目 の Date 引数までの年数を返します。

(現在の年が 2022 年である場合)

date().yearsUntil(date(2023, 11, 12)) は 1 を返します。

monthsUntil(from: Date, to: Date)

整数

最初の Date 引数から 2 番目 の Date 引数までの月数を返します。例については、「yearsUntil」を参照してください。

daysUntil(from: Date, to: Date)

整数

最初の Date 引数から 2 番目 の Date 引数までの日数を返します。例については、「yearsUntil」を参照してください。

weeksUntil(from: Date, to: Date)

整数

最初の Date 引数から 2 番目 の Date 引数までの週数を返します。例については、「yearsUntil」を参照してください。

isLeapYear(date: Date)

ブール値

年がうるう年の場合は「true」を返し、そうでない場合は「false」を返します。

date(2020, 3, 4).isLeapYear は、2020 年がうるう年であったため、true を返します。

text(date: Date)

テキスト

Date 値をテキスト表現に変換します。

text(date(2000, 12, 25))2000-12-25 を返します。

text(date: Date, pattern: Text)

テキスト

Date 値を、指定したパターンに一致するテキスト表現に変換します。

text(date(2000, 12, 25), "M/YY/d") 12/00/25 を返します。

text(date: Date, pattern: Text, locale: Text)

テキスト

Date 値を、指定したパターンとロケールに一致するテキスト表現に変換します。

text(date(2023, 12, 12), "MMMM d, yyyy", "de-DE") Dezember 12, 2023. を返します。

時刻関数

関数

結果タイプ

time()

時刻

現在の時刻を返します。

time(hours: Integer, minutes: Integer, seconds: Integer)

時刻

指定した時、分、および秒の時刻を返します。

time(hours: Integer, minutes: Integer, seconds: Integer, nanos: Integer)

時刻

指定した時、分、秒、およびナノ秒の時刻を返します。

time(dateTime: DateTime)

時刻

以前に DateTime が指定されていた場合に、DateTime の時刻値を返します。

time(text: Text, pattern: Text, locale: Text)

時刻

指定したパターンとロケールを使用して、Text 値をTime 値に変換します。

time("January 1, 2022 12:30", "MMMM d, yyyy hh:mm a", "en-US")

hour(time: Time)

整数

現在の時刻の時間を返します。

minute(time: Time)

整数

現在の時刻の分を返します。

second(time: Time)

整数

現在の時刻の秒を返します。

nanosecond(time: Time)

整数

現在の時刻のナノ秒を返します。

withHour(time: Time, hours: Integer)

時刻

時間を変更した時刻を新たに返します。

time(14, 50, 45).withHour(2) は、時 = 2、分 = 50、秒 = 45、ナノ秒 = 0 を返します。

withMinute(time: Time, minutes: Integer)

時刻

分を変更した時刻を新たに返します。例については、「withHour」を参照してください。

withSecond(time: Time, seconds: Integer)

時刻

秒を変更した時刻を新たに返します。例については、「withHour」を参照してください。

withNano(time: Time, nanos: Integer)

時刻

ナノ秒を変更した時刻を新たに返します。例については、「withHour」を参照してください。

plusHours(time: Time, amount: Integer)

時刻

指定した時間数を加えた時刻を新たに返します。

time(14, 50, 45).plusHours(2) は、時 = 16、分 = 50、秒 = 45、ナノ秒 = 0 を返します。

plusMinutes(time: Time, amount: Integer)

時刻

指定した分数を加えた時刻を新たに返します。例については、「plusHours」を参照してください。

plusSeconds(time: Time, amount: Integer)

時刻

指定した秒数を加えた時刻を新たに返します。例については、「plusHours」を参照してください。

plusNanos(time: Time, amount: Integer)

時刻

指定したナノ秒数を加えた時刻を新たに返します。例については、「plusHours」を参照してください。

minusHours(time: Time, amount: Integer)

時刻

指定した時間数を差し引いた時刻を新たに返します。

time(14, 50, 45).minusHours(2) は、時 = 12、分 = 50、秒 = 45、ナノ秒 = 0 を返します。

minusMinutes(time: Time, amount: Integer)

時刻

指定した分数を差し引いた時刻を新たに返します。例については、「minusHours」を参照してください。

minusSeconds(time: Time, amount: Integer)

時刻

指定した秒数を差し引いた時刻を新たに返します。例については、「minusHours」を参照してください。

minusNanos(time: Time, amount: Integer)

時刻

指定したナノ秒数を差し引いた時刻を新たに返します。例については、「minusHours」を参照してください。

hoursUntil(from: Time, to: Time)

整数

最初の Time 引数から 2 番目の Time 引数までの時間数を返します。

time(9, 41, 35).hoursUntil(time(15, 34, 12)) は 5 を返します。

minutesUntil(from: Time, to: Time)

整数

最初の Time 引数から 2 番目の Time 引数までの分数を返します。例については、「hoursUntil」を参照してください。

secondsUntil(from: Time, to: Time)

整数

最初の Time 引数から 2 番目の Time 引数までの秒数を返します。例については、「hoursUntil」を参照してください。

millisUntil(from: Time, to: Time)

整数

最初の Time 引数から 2 番目の Time 引数までのミリ秒数を返します。例については、「hoursUntil」を参照してください。

nanosUntil(from: Time, to: Time)

整数

最初の Time 引数から 2 番目の Time 引数までのナノ秒数を返します。例については、「hoursUntil」を参照してください。

toSecondsOfDay(time: Time)

整数

時刻を秒に変換します。

time(1, 0, 0).toSecondsOfDay() は 3600 を返します。

toNanosOfDay(time: Time)

整数

時刻をナノ秒に変換します。

time(1, 0, 0).toNanosOfDay() は 3600000000000 を返します。

text(time: Time)

テキスト

Time 値をテキスト表現に変換します。

hour(time(10, 15, 00)) は、10:15:00 を返します。

text(time: Time, pattern: Text)

テキスト

Time 値を、指定したパターンに一致するテキスト表現に変換します。

text(time(10, 15, 00), "hh:m a") は 10:15 AM を返します。

text(time: Time, pattern: Text, locale: Text)

テキスト

Time 値を、指定したパターンとロケールに一致するテキスト表現に変換します。

text(time(10, 15, 00), "hh:m a", "de-DE") は 10:15 vorm を返します。

変換関数

変換関数は、あるタイプから別のタイプへ値を変換します。オペランドの値が、結果タイプの値に変換可能な値を表していない場合、変換が失敗することがあります。

変換関数の例については、変換関数の一覧に続く表を参照してください。

変換関数

関数

結果タイプ

ampersandEncode(text: Text)

テキスト

テキストをアンバンサンド エンコードします。

ampersandEncode("&") &amp; を返します。

ampersandDecode(text: Text)

テキスト

テキストをアンバンサンド デコードします。

ampersandDecode("&gt;")> を返します。

base64Encode(binary: Binary)

テキスト

MIME (RFC 2045) 用の Base64 転送エンコードを使用する Base64 エンコード。

binary.base64Encode()。ここで、binary はバイナリ値を持つ変数です。

base64Decode(text: Text)

バイナリ

MIME (RFC 2045) 用の Base64 転送エンコードを使用する Base64 デコード。

base64Decode("SGVsbG8=").text("UTF8")Hello を返します。

boolean(text: Boolean)

ブール値

テキストは「true」または「false」のいずれかに一致する必要があります。

boolean(false:Boolean)false を返します。

integer(Number)

整数

数値は 1.0 などの整数値である必要があります。

integer(Text)

整数

テキストは、"42" などの整数のテキスト表現である必要があります。

number(Integer)

数値

Number(17) は 17.0 を返します。

number(Text)

数値

テキストは、"17.7" などの数字のテキスト表現である必要があります。

text(Integer)

テキスト

text(Number)

テキスト

text(Boolean)

テキスト

text(binary: Binary, charsetName: Text)

テキスト

テキストの二進表現をテキスト タイプの値に変換します。UTF8 などの文字セットを引数として指定します。

binary(text: Text, charsetName: Text)

バイナリ

テキスト値をバイナリ値に変換します。UTF8 などの文字セットを引数として指定します。

"Hello".binary("UTF8").text("UTF8")Hello を返します。ここで、 "Hello".binary("UTF8") は UTF8 文字エンコードを使用してエンコードされたバイナリ値に評価されます。例のようにバイナリ値がテキストに変換される場合、バイナリ値は同じ文字エンコード (この場合は UTF8) を使用してエンコードする必要があります。

toJSON()

パスワード以外のあらゆるタイプの値を、JSON オブジェクトとしてフォーマットされたテキスト値に変換します。パスワード タイプ属性を含むレコード タイプは JSON に変換できません。

変換された値の例
  • 5 は "5" となります

  • 1.2 は "1.2" となります

  • true は "true" となります

  • "Hello" は "\"Hello\"" となります

  • バイナリ値は、バイナリ値の Base 64 エンコードになります

  • レコード値、R(a = 5, b = true, t = "Hello") は "{\"a\":5,\"b\":true,\"t\":\"Hello\"" となります

ワークフロー状態ビューには、引用符の前の逆スラッシュが表示されません。上に示したレコードの値の変換方法は、エクスプレッションに記述する方法です。

toJSON 関数は、[1,2,3] のような配列を生成することはありせん。ロボットで JSON 値を使用する場合は、文字列を連結することによりリストを作成できます。このようにすると、ロボットからベーシック エンジン ロボットに値を返すことができます。

詳細については、JSON の使用を参照してください。

次の表は、変換関数の一覧と説明です。これらは、text(2) などの直接関数呼び出しと 2.text() などのメソッド関数呼び出しという 2 とおりの記述が可能です。

最初のバリアントでは関数は直接呼び出されますが、2 番目のバリアントではエクスプレッション モードでエクスプレッションを記述する場合に、自動テキスト入力を使用できます。

詳細については、「エクスプレッション エディター」のトピックの「エクスプレッション モード」を参照してください。

変換の例

関数

以下の結果に評価

ampersandEncode("<b/>") または "<b/>".ampersandEncode() &lt;b/&gt;
ampersandDecode("&lt;b/&gt;") または "&lt;b/&gt;". ampersandDecode() <b/>
base64Encode(bin) または bin.base64Encode()

bin は "Hello".binary("ASCII") の結果のバイナリ値を保持している変数です

SGVsbG8=
base64Decode("SGVsbG8=").text("UTF8") または "SGVsbG8=".base64Decode().text("UTF8") Hello
  • "true".boolean()
  • "false".boolean()
  • "False".boolean()
  • Boolean true

  • Boolean false

  • 「true」または「false」のいずれにも一致しないため、ConversionIssue 例外をスローします

  • integer(2.0) または 2.0.integer()

  • integer("2") または "2".integer

2
  • number(2) または 2.number()

  • number("2") または "2".number()

2.0
number(".1E10") または ".1E10".number() 1.0E9
"Hello".binary("UTF8").text("UFT8")

ここで "Hello".binary("UTF8") は UTF8 文字エンコードを使用してエンコードされたバイナリ値と評価します。例のようにバイナリ値がテキストに変換される場合、バイナリ値は同じ文字エンコード (この場合は UTF8) を使用してエンコードする必要があります。

Hello
"hello".toJSON() "hello"
17.7.toJSON() 17.7
true.toJSON() TRUE
Company.toJSON()

ここで"Company"はテキストタイプ、整数タイプ、ブールのフィールド タイプを含むレコード タイプの変数です。

次の値のテキスト値:

{"name":"Acme Corp.", "url":"www.acme-corp.com", "revenue":1000000000, "CEO":"Marvin Acme", "fictional":true}

数値の制限

次に示すような数値の制限を考慮してください。

整数値

表現できる最大の整数は 1E34-1 です。これは 9 が 34 個並んだ数値です。この数字に対して 1 を加えると、OverflowIssue の例外が発生します。同様に、表現できる最小の整数値は -1E34+1 です。したがって整数値はすべて、-1E34+1 から 1E34-1 (どちらも含む) の範囲内である必要があります。

数値

数値の表現は、小数点以下を含め 34 桁の数を使用する IEEE 754R Decimal128 と、-2147483648~+2147483648 の範囲の指数の表現に一致します。エクスプレッションの評価で範囲外の数値になった場合、OverflowIssue 例外が発生します。

詳細については、数値の制限を参照してください。

次のように、指数で数値を入力することができます。

1.234E5、0.1E-2, 1000.0e42、など。

基本数の後には、任意の E または e および整数の指数が続きます。[データの状態] ビューまたはエクスプレッション エディターに数値が表示される際には、次のルールに従って正規化されます。

  • 他の 10 進数がない場合、小数点の後にゼロが 1 つ表示されます (1.0E12 など)。
  • 指数は、数値が 9 以上の場合にのみ表示されます。つまり、次のようになります。
    • 1.0E8 は 100000000 と表示されますが、1.0E9 は 1.0E9 と表示されます
    • 1.0E-8 は 000000001 と表示されますが、1.0E -9 は 1.0E-9 と表示されます。
  • 数字は最大 34 桁まで表示されます (数字は四捨五入されて最大 34 桁となります)。たとえば、9.999999999999999999999999999999999 という数字はそのまま表示されます。この数字に 9 をもう 1 つ追加すると、10.0 と表示されます。実際には、数値は四捨五入されているため、内部的にも 10.0 として表されます。したがって、数値を一方向に入力しながら別の方法で表示することができるため、10.0 や 0.1E2 など、数値の入力方法に柔軟性を持たせることができます。

また、変換関数 text(Number) も上記のルールに従って記述された数値を返します。

エクスプレッション エディター

エクスプレッション エディターは、ロボットで入力フィールドをクリックした場合、および指定したフィールドがエクスプレッションの入力をサポートしている場合に開く、インタラクティブなエディターです。エディターは 2 つのペインで構成されています。上部のペインはエクスプレッションの入力や編集を行う入力ペインで、下部のペインは結果ペインです。結果ペインには、エクスプレッションの評価結果、エラーメッセージ、またはその両方が表示されます。次のエラーが表示されることがあります:

  • Parse errors: エクスプレッションの構文が不正です。
  • Type errors: エクスプレッションにタイプ エラーがある、または結果が正しいタイプとなっていません。
  • 評価 errors: ゼロによる除算など、エクスプレッションの評価中にエラーが発生しました。

次の例は、x + 1.0 というエクスプレッションです。ここで x は整数タイプの変数であるとします。エクスプレッションには正しいタイプが付けられていますが、結果は整数タイプの変数に割り当てられるものであるため、エクスプレッションの結果タイプは想定外であるというエラー メッセージが表示されます。

デバイス オートメーションのエクスプレッション エディター

右クリックして [値のコピー] を選択すると、エディターの下部ペインからエクスプレッションの結果とエラー メッセージをコピーすることができます。値がレコード タイプの場合、結果はツリーとして表示され、各属性値は個別にコピーできます。パスワードとバイナリ値はコピーできません。

値モードでは、選択範囲をコピーするために使用できるコピー アイコンが表示されます。

式エディターを閉じるには、エディターの外側をクリックするか、[OK] をクリックします。

エディター モード

エディターには、上部ペインの左側にエクスプレッション モードと値モードを切り替えるモード ボタンがあります。上の画像のエディターは、エクスプレッション モードです。エディターが [値モード] である場合、モード ボタンは空白になります。エディターがエクスプレッション モードである場合、入力ペインには等号 (=) が表示されます。キーボード ショートカット [Ctrl-E] を使用すると、2 つのモードを切り替えることができます。

エクスプレッション モード

[エクスプレッション モード]では、入力ペインに入力したすべての内容が式として解釈され、構文と入力エラーがチェックされます。現在のフロー ポイントでエクスプレッションを編集していてエラーがない場合は、評価され、その結果が表示されます。エクスプレッションの状態が常にわかるように、入力の途中で評価が行われます。現在のフロー ポイントにないエクスプレッションを編集する場合は、変数が含まれていないか、値が現在の状態に依存していないか評価されます。

エクスプレッション モードでのテキスト補完は、変数名、フィールド名、関数名の入力に役立ちます。補完ヘルプがあるものを入力すると、テキスト補完ウィンドウが自動的に表示されます。たとえば、変数名の入力を開始し、すでに入力したものから始まる変数がある場合、補完ウィンドウが表示されます。レコード タイプの変数の後でドット (.) を押すと、補完ウィンドウには、レコード タイプのフィールドに対応した補完オプションのリストが表示されます。次の例は、"p" と入力した後の補完ヘルプを示します。

エクスプレッション エディターの補完ヘルプ

シンプル タイプのサブエクスプレッションの後にドット (.) を押すと、最初の引数が同じシンプル タイプを持つ関数に対応する補完オプションのリストが、補完ウィンドウに表示されます。

エクスプレッション エディターの補完ヘルプ

補完リストのオプション間を移動するには、矢印キーまたはマウスを使用します。補完リストでオプションを選択するには、[Enter]、[Tab] を押すか、オプションをダブルクリックします。何も入力せずに補完ウィンドウを開くには、[Ctrl+Space] を押します。補完ウィンドウを閉じるには、ウィンドウの外側をクリックするか、[Esc] を押します。

入力ペインでエクスプレッションの一部が選択され、その選択が適切なサブエクスプレッション (それ自身で評価可能) に相当する場合、このサブエクスプレッションの値が下の図のように結果ペインに表示されます。

選択された部分のあるエクスプレッション

入力ペインで関数の名前を選択すると、この関数の説明が結果ペインに表示されます。

値モード

値モードでは、入力された値はテキスト、ブール値、数値などの値としてそのまま解釈されるため、評価は行われません。結果パネルに結果が表示されます。表示されるエラーは、結果タイプが不正な場合のみです。

値モードで入力された値の先頭に「=」がある場合、エディターはエクスプレッション モードに切り替わります。