こちらのTIPS(レコードを複数条件で取得する(クエリ書きません!))では、複数条件の全てに一致したレコードを取得しています。(いわゆるAND条件です)


これとは別ですがよくある検索条件として「いずれかの値に一致した時」というケースもあると思います。(こちらはOR条件です)

この場合に対応する方法を考えてみます。


現在のところ複数の絞り込みの結果を結合するという「やること」は存在しないのと、絞り込みの設定ではOR条件を実現できないという問題があり、次の「やること」を使うようにします。


※2022年5月12日リリースより、「クエリで条件を指定してレコードを取得する」は式の結果値が自動的にエスケープされるようになりました。

ここで紹介しているように、textjoin関数を利用してクエリを組み立てる場合、やること「クエリで条件を指定してレコードを取得する(エスケープなし)」を利用する必要がありますので、ご注意ください。


検索条件の場所に入力するのはkintoneのクエリ(kintone API のクエリの書き方の基本)とCustomineの値参照や関数(関数一覧)という2つの知識が必要なので難易度が高めになっています。

ただ、上記サイボウズ社のドキュメントを熟読し理解すれば、以下のことは簡単に実現できますので、余裕のある方はぜひ熟読をおすすめします。


ここからは、いろいろな例を元に入力例を紹介していきます。


チェックボックスで選択した項目に一致するレコードを取得

支店一覧を表示する時にチェックを入れた県だけ表示します。取得用のボタンは「ボタンをスペースに配置する」で作成して、結果は「レコードの一覧をポップアップで表示する」で確認します。


県のチェックボックスの値を使って、別アプリにある営業所マスタからレコード取得します。その時に検索条件に入力するのはこのような内容です。


県 in ("${textjoin('","', "YES", 県)}")


= は不要なところに気をつけてください。

基本的に検索条件にはkintoneのクエリ文字列を入力するので、値などで入力する頭の=は不要です。


指定項目が可変ならテーブルを使う

先程の方法だと営業所が増えるたびにアプリの修正が必要になります。そこでテーブルを使って県を指定するように変えてみます。



県をルックアップで指定してからボタンを押すと対象の県だけを表示します。

この場合の検索条件は次のようになります。


県 in ("${textjoin('","', "YES", テーブル.県選択)}")


textjoin関数の中の 県 が テーブル.県選択 に変わっているだけです。この書き方でテーブル内の全行を指定したことになります。


文字検索みたいに自由にキーワードを指定したい

指定したキーワードで検索したいということもあると思います。今回は完全一致ではなく部分一致で考えてみます。

「報告」という複数文字列のフィールドに、“訪問” という文字があるレコードを取得してみましょう。


キーワードに入力した文字が含まれるレコードが取得できました。

この場合の検索条件は次のようになります。

報告 like "${キーワード}"


これが基本形となります。ここから表題のような「いずれか」に変えていきます。


文字検索みたいに自由にキーワードを複数指定したい(OR)

今度は、”訪問”と”作成”があるレコードを取得してみます。検索条件を作成するために変換用のフィールドを1つ追加します。

複数キーワードは 訪問,作成 のように,区切りで入力するようにします。

そして次のような設定にします。

ボタンを押した時に「フィールドに値をセットする」でキーワードをキーワード変換用にコピーした後に、「フィールドの値の一部を文字列置換する」でクエリを作成します。


ポイントは , を " or 報告 like " に変換するところです。これでそれぞれのキーワードのどれかに一致した結果が取得できます。


文字検索みたいに自由にキーワードを複数指定したい(AND)

先程の置換を + を " and 報告 like " に変えると両方のキーワードに一致した時になります。


文字検索みたいに自由にキーワードを複数指定したい(AND と OR の混在は可能?)

区切り文字を工夫すれば簡易なANDとORの混在も可能です。


訪問+作成,資料+会議


上記のような書き方で、訪問と作成があるレコードか資料と会議があるレコードを取得してみましょう。まず、以下のように設定を変更して + はandで , は or でつなぐようにします。


追加した「フィールドの値の一部を文字列置換する」の検索条件で , を ") or (報告 like " に置換えるのと、「クエリで条件を指定してレコードを取得する」で (報告 like "${キーワード変換用}") という風に()で囲うように変更している所が重要です。


結果はこうなります。


ただ、これらの文字列置き換えによる検索手法は、 , や + の後に空白があるとエラーになるなどの入力間違いに弱いという問題はありますので、あくまで簡易的なものとお考えください。


まとめ

最初に紹介したTIPS(レコードを複数条件で取得する(クエリ書きません!))と違い、OR条件にするとかなりややこしくなります。


ただ、いくつかのパターンに慣れれば上手く使えるようになるのではないかと思いますので、是非挑戦してください。