一覧の絞り込みで、条件に「-」など記号を入れると表示されない

いつもお世話になっております。
一覧作成時、絞り込み条件に記号「-」を設定すると、該当データが検索されません。

(例)
フィールド「名前」

次のキーワードを含む

「-」ハイフンなどの記号を検索条件に含める方法はありますか?
「*」や「,」も試してみましたが、同じ結果でした。

文字が変換されてしまいました。
「次のキーワードを含む」で、値に「-」を設定した場合です。

hiroko5572 様
ラジカルブリッジの斎藤です。

kintoneのユーザーヘルプ
https://help.cybozu.com/ja/k/user/search_details.html
の下の方に「検索キーワードに関する注意」という注意書きがあります。

===================================
次の記号は検索キーワードから除かれます。

・全角および半角の次の記号

    • & | / ! ( ) { } [] ^ " ~ * ? : ; \ $ % & @ ’ ` = < > , .

・日本語および中国語の句読点

残念ですが、今のところは「-」ハイフンなどの記号を検索条件に含める方法は無いのではないかと思われます。

こちらによると、「-」「*」「,」といった記号類は検索対象外のようです。

ラジカルブリッジ 斎藤様

ご回答どうもありがとうございます。
注意書き確認いたしました。
本件、解決でOKです。

ただ、フィールドの数が多く、ユーザが一覧から検索条件の変更(フィルタ)を簡単に行えるようにするため、デフォルトで項目を設定しておきたいと考えています。

そこで、全レコードに共通の文字列「-」などを含み、「-」を含むレコードを初期表示しておけば、ユーザは、フィルタでフィールドを探さずに条件を変更するだけで、検索条件の変更が可能となる、いう対策のためでした。

一覧のフィルタを頻繁に変更することがありますので、100を超えるようなフィールド数はドロップダウンでは選択しにくいのですが、何かよい方法はございますでしょうか?

ただ、フィールドの数が多く、ユーザが一覧から検索条件の変更(フィルタ)を
簡単に行えるようにするため、デフォルトで項目を設定しておきたいと
考えています。
そこで、全レコードに共通の文字列「-」などを含み、「-」を含むレコードを
初期表示しておけば、ユーザは、フィルタでフィールドを探さずに条件を変更
するだけで、検索条件の変更が可能となる、いう対策のためでした。

こちら、ようやく意図がわかりました。
100を超えるフィールドがある中、絞り込みに使わせたいフィールドが例えば5つだとして、予め

フィールド1:次のキーワードを含む:“-”
フィールド2:次のキーワードを含む:“-”
フィールド3:次のキーワードを含む:“-”
フィールド4:次のキーワードを含む:“-”
フィールド5:次のキーワードを含む:“-”

というフィルタ条件を設定した一覧を作成しておき(この段階では全件表示されている)、ユーザーがフィルタを開いたら、すぐにフィールド1、2、3、4、5のいずれかの値部分に条件値だけ入れられれば楽だろうということですね?

このニーズは以前からよく聞かれる話題なのですが、kintoneの標準機能ではなかなか難しいのではないかと思われます。

JavaScriptで独自の検索ボックスを作り、対応しているケースもあるようですが。。

以前も似たようなご質問がありましたね(^^;
https://cybozudev.zendesk.com/hc/communities/public/questions/200983514-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%A4%9C%E7%B4%A2%E3%81%A7%E5%AF%BE%E8%B1%A1%E3%81%A8%E3%81%AA%E3%82%8B%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E9%81%B8%E3%81%B6%E3%81%A8%E3%81%8D%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E4%B8%A6%E3%81%B3%E9%A0%86%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%81%84

斎藤様

コメントありがとうございます。
書き込みいただいたい内容の通りです。
JSで検索ボックスを作ることができれば理想です。
サンプルを公開していただけると助かりますが・・・

hiroko5572様

ずばりそのもののサンプルは持ち合わせていないことや、サンプルがあってもこちらの環境とhiroko5572さんの環境が違い過ぎて解説が難しいところもあるので言葉で解説しますが、kintoneのJavaScriptカスタマイズのお作法は理解されていますでしょうか?

1.kintone.app.getHeaderMenuSpaceElement()かkintone.app.getHeaderSpaceElement()で取得した一覧上部の空白エリアにJavaScriptで必要なフィールド名が選択肢になっているプルダウンや値の入力テキストボックス、「検索」ボタンを作ります。

2.検索ボタンを押すと、プルダウンの選択内容・値を使って、一覧のURLを自前で生成します。

例)ViewIDが12345、検索対象の内部フィールドIDがf2222、検索値が「kintone」を含む、の場合の例
https://xxxxx.cybozu.com/k/1/?view=12345&q=f2222%20like%20%22kintone%22

3.2で生成したURLに遷移させます。

かなりざっくりとした解説ですが、いかがでしょうか?
2.で生成するURLは、実際にkintoneでなんらかの検索をしてみた時のURLを真似してみるとわかりやすいと思います。(hiroko5572さんの環境でのViewIDやフィールドIDがURLに出てきているはずです)

斎藤 様

コメントありがとうございます。
JSで一覧のメニュー下に検索項目・検索ボタンを作成するところまで進みました。

ボタンクリック時の処理で、
「3.2で生成したURLに遷移させます。」
をする部分からのヒントがもう少し欲しいです。

まずは、URLの生成なのですが、

「2.で生成するURLは、実際にkintoneでなんらかの検索をしてみた時のURLを真似してみるとわかりやすいと思います。」

について、検索条件は以下を参考に取得できました。
https://developers.cybozu.com/ja/kintone-api/apprecindex-readjsapi.html#order_by_limit_offset

例えば、
フィールド「aaa」が文字列「test」を含むの一覧を表示したい場合、コメントのサンプル通りですと

https://(会社ID).cybozu.com/k/(アプリID)/?view=(一覧ID)&q=aaa%20like%20%22test%22

となると思うのですが、ブラウザに直接URLを入力しても「レコードを読み込めません」とエラーになります。

URLを生成する具体的な方法を説明しているページなどありましたら教えてください。

お手数おかけいたしますが、よろしくお願いいたします。

hiroko5572様

例えば、
フィールド「aaa」が文字列「test」を含むの一覧を表示したい場合、
コメントのサンプル通りですと
https://(会社ID).cybozu.com/k/(アプリID)/?view=(一覧ID)&q=aaa%20like%20%22test%22
となると思うのですが、ブラウザに直接URLを入力しても「レコードを
読み込めません」とエラーになります。

フィールド名が「aaa」ということかと思いますが、URLではこの名前はそのままでは使えず、kintoneの内部的なフィールドIDのようなものにしてあげる必要があります。
実際にkintone上でフィールド「aaa」に何らかの条件を指定して検索してみると「q=f2222%20like%20%22test%22」のような表記が出てきませんか?
(f2222というところが「aaa」に対応した内部フィールドIDです)

これをそのまま真似するということです。

この内部フィールドIDのドキュメントはWeb上では見たことが無く、また数字部分は環境によっても変わるので、その契約ドメイン内でしか使えないIDなのだと思います。(そして、あまりオープンな仕様ではないと思うので、今後仕様が変わるかもしれず、これを前提にプログラムを書いて良いのか?というところもありますが、kintoneは様々な画面をブックマークできますので、このフィールドIDが変わることはまず無いと考えています)

尚、書かれていた参考ページ
https://developers.cybozu.com/ja/kintone-api/apprecindex-readjsapi.html#order_by_limit_offset
ですが、こちらで得られる検索条件文字列は、ブラウザのURLの検索条件文字列とはイコールではありません。あくまで一覧画面で表示されている検索条件と同じ条件になる検索API用の検索条件文字列を取得できるものですので、そのままブラウザに入れてもエラーになります。

いかがでしょうか?

斎藤 様

URLの内部IDの件は理解しました。f2222=フィールドコードと勘違いしておりました。
ご指摘どうもありがとうございました。

初期設定した検索条件・ソート内容を元に、JSで作成した検索ボックスに入力された値の書き換え、または、追加・削除などしてURLを生成することになると思います。

レコード一覧の初期表示では、URLにパラメータが付いていないため、最初のURLの取得はどのようにするのでしょうか?

また、生成したURLは、document.locationで表示する方法となりますか?
その際、JSで作成した検索ボックスには、入力値が残らないため、入力値を残すような手法が必要となりますよね?

他の業者さんは、どのようにされているのでしょうか?

hiroko5572様

レコード一覧の初期表示では、URLにパラメータが付いていないため、
最初のURLの取得はどのようにするのでしょうか?

これは初期表示ではURLにパラメータが付いていないため検索ボックスへの値の復元ができない、ということでしょうか?
初期表示のパラメータは予めkintoneに設定しておくと思いますが、それと同じパラメータをJS内に初期条件値として持っておくか、この間言っていたkintone.app.getQuery で実際の条件を抜き出すかで実現できないでしょうか?

また、生成したURLは、document.locationで表示する方法となりますか?

はい、これで画面遷移させる想定です。

その際、JSで作成した検索ボックスには、入力値が残らないため、入力値を残すような手法が必要となりますよね?
他の業者さんは、どのようにされているのでしょうか?

遷移先のURLに入力値があるので、これを使って復元してはいかがでしょうか?

斎藤様

早々のご回答ありがとうございます。

「遷移先のURLに入力値があるので、これを使って復元してはいかがでしょうか?」
について、

検索項目・ソート順は複数設定しています。
URL文字列から、内部フィールドIDを検索して、次の内部フィールドIDが見つかるまでの文字列を取得・・・のような作業を全項目分JSで行うようなイメージでしょうか?

hiroko5572 様

検索項目・ソート順は複数設定しています。
URL文字列から、内部フィールドIDを検索して、次の内部フィールドIDが見つかるまでの文字列を取得・・・のような作業を全項目分JSで行うようなイメージでしょうか?

どのような自前検索ボックスをご用意されているかよくわかっておりませんが、検索条件は同時に複数設定できるようなUIなのでしょうか?
またソート順は自前ではなくkintone標準のものでしょうか?

検索条件の方は同時に一つしか設定できないUIなのであれば、URLにもそのフィールドのものしか出てこないように思うので、そんなに難しくないと思うのですが、複数の項目全てがURLに含まれているということは、複数のフィールドを設定できる自前検索ボックスになっているのでしょうか?
であれば hiroko5572 さんの仰るやり方になるかと。

ソート順の方は複数であっても連続しているので比較的抽出しやすいのではないでしょうか。


kintoneのJSカスタマイズはまだまだ発展途上で、セオリー的なものが確立されているわけではない状況です。なのでやりたいことをやるのに苦労する場面が多いと思います。が、バージョンアップで同じことがすごく簡単にできるようになったりもしますので、時期によって答えが変わる場合がありますが、今回の hiroko5572 さんの疑問については、わりと細かく自前でやる必要があるかと思いますよ。

斎藤様

「複数の項目全てがURLに含まれているということは、複数のフィールドを設定できる自前検索ボックスになっているのでしょうか?」

検索ボックスには複数の項目を持ち、AND条件で結合するように考えております。
今回は、JSでのコーティング手間を考えると、事前に「〜を含まない」設定をAND条件でしておいて、通常のフィルタでユーザに書き換えてもらう方がよさそうな気がします。

kintone使用で、どんな項目でも自由に検索できることをメリットとしておりましたが、項目数が多いアプリにおいては、ドロップダウンで項目が探しにくいことが、ネックに思います。

要望でも上がっているようですが、フィルタに表示する項目の優先順位が設定可能となれば、大変使いやすくなると思います。

長いお時間いただきまして、どうもありがとうございました。

hiroko5572 様

ちょうど先ほど、7/13のアップデート内容が本サイトに掲載されました。
https://cybozudev.zendesk.com/hc/ja/articles/202374250

JavaScript APIのところで、

・レコード⼀覧画⾯のURLにクエリを含めることで、一覧と絞り込み条件を指定する機能。

とありまして、URLを生成する時に内部フィールドIDを使わなくても良くなるかもしれません。

既に別の対策をされるようですが、ご参考まで。