2026年5月20日にリリースされたサイボウズの「連携コネクタ」。
今回は、数値による真偽の判定をする方法を考えてみました。
次のような判定を入れるシナリオを作りたいケースです。
kintoneアプリで、条件に一致するレコードの有無によってtrue/falseを判定して、その後のアクションを実行
具体的な例として、「未入力を検出したいフィールド」が空白のレコードがなければtrue/あればfalseを出力するステップを追加する方法を考えます。
(1)アクション:[kintone]レコードの一覧取得
「クエリ」に条件を指定して、条件に一致するレコードを一覧で取得する。
クエリ
未入力を検出したいフィールド = ""
| 出力の例 |
|---|
| [表データ] n件 |
(2)アクション:[一般]配列/表データ件数の取得
(1)で取得した表データの件数を取得する。
| 出力の例 |
|---|
| [size] n |
ここまではいいのですが、問題は次の判定の部分です。
(3)アクション:[一般]フィールド関数を実行する
案1:EXACT関数(できない)
(2)で取得した件数nが0なら「true」、0以外なら「false」を返したいのですが、その判定ができるフィールド関数がありません。
EXACT(文字列の完全一致)や、REGEXTEST(正規表現による判定)はあるのですが、(2)の出力nが「数値型」なのに対し、「文字列型」の値しか判定できません😭


文字列型を入れないといけないところに、数値型の値を入れているので、「不正な値が入力されています」になってしまいました。
フィールド関数に入れる値は「型」が違うと「不正な値」になります。
案2:EXACT/LEFT関数(強引だけどできた)
数値型の値で判定できる方法はないか考えて、思いついたのはLEFT関数です。


何でもいいので適当な文字列(例では「条件に一致するレコードあり」)の左から、(2)で取得したn文字を抽出した文字列が、「(空白文字列)」と一致するかを判定します。
これなら、n=0の時(条件に一致するレコードがない時)は「左から0文字抽出」なので、抽出した文字列が空白となりtrue、n≠0(条件に一致するレコードがある時)は、falseとなり、期待通りの出力を得ることができました。
比較する文字列「条件に一致するレコードあり」の文字数「13」より大きい数値を入れた場合などにもちゃんと判定されるかどうか、[size]の代わりに実際の数値を入れて、出力を確認してみました。
| [size]に入れた数値 | expression_boolearnの出力 |
|---|---|
0の場合(条件一致が無い場合)
|
trueになったので期待通り
|
5の場合(条件一致があるが比較文字数より少ない場合)
|
falseになったので期待通り
|
20の場合(条件一致があるが比較文字数より多い場合)
|
falseになったので期待通り
|
0の時はfalse、0以外の時はtrueと反転させたい場合は、NOT関数を追加します。
数値型の値が入れられるフィールド関数、今はLEFT,RIGHT,MIDだけなので、数値による判定をしたい場合はこれらを駆使するしかなさそうです。
案3:中断判定や条件分岐の条件で演算子を使用(できなさそう)
ここまで書いて「こんな裏技的な方法を使わんくてもいいように、関数をもっと充実させて欲しいですね」と、まとめようとしたところ
アクション:[シナリオ制御]の中断判定や条件分岐の条件「true または false になる値を設定してください」の部分に、[size]=0と演算子を入れている投稿をいくつか見つけました。

しかし、検証してみたところsizeにどんな値が入っていてもfalseになってしまいました。0=0などを入れてみてもfalseでした。ここに式を入れて判定することはできなさそうです。
案4:表データの存在チェック(たぶん最適解)
案2のLEFT(文字列, [size]) という方法は関数の本来の用途(文字列の一部切り出し)からは外れた裏技的な方法です。もっといい方法がないものか模索していたところ、
「表データの存在チェック」というアクションがあることに気が付きました。

[kintone]レコードの一覧取得 のステップの後に、[表データ]データの存在チェック のステップを追加して、「データがない場合にtrueを返す」を設定するだけでした。([一般]配列/表データ件数の取得のステップは不要)
表データの有無で判定するだけなら、これが最適解ですね。
今回やりたかった「0件か1件以上か」の判定であれば、件数を数値として比較する必要自体なかったということになります。

応用:任意の数値で判定する
[size]>=5、のようなしきい値による判定が必要な場合は、LEFT関数を使って、
EXACT(LEFT("ABCDE",[size]),"ABCDE")
など裏技的に判定するしかなさそうでしょうか。
※この場合、sizeが5以上ならLEFT("ABCDE",[size])が"ABCDE"になるため、trueになります。
さらに、[size]=5のように特定の値との一致を判定する方法も考えてみました。複雑〜😆
最初のEXACTだけだと、[size]=0もtrueになってしまうからね。
AND(
EXACT(LEFT("ABCDEFGHIJ",[size]),RIGHT("FGHIJABCDE",[size])),
NOT(EXACT(LEFT("A",[size]),""))
)
[size]に、5/0/6を入れて出力結果を確認してみます。

↑これは5=5trueになるのでOK

↑これは0=5falseになるのでOK

↑これも6=5falseになりました。正しく判定できていることが確認できました。
まとめ
連携コネクタの情報はまだまだ少ないので、実際に自分で設定して試してみるのが重要そうです。
これから多くの内容が集まって、また連携コネクタ自体もアップデートされるのが楽しみです☺️




