各一覧の絞込設定取得と検索機能について

お世話になっております。

タイトルの件について、現在下記のように検索窓を設定しております。

function keyword_search(){
const coed = '文字列1行';
var keyword = search_word.value;
var viewid = event.viewId
var str_query = '?view=' + viewid + '&' + 'query=' + coed + ' like ' + keyword;
document.location = location.origin + location.pathname + str_query
}

各ビューごとに異なった絞込とソートの設定を行っておりますが、上記の検索窓から

検索を行うと、設定した絞込条件(※文字列1行にキーワードを含む)のみで絞込の表示がされます。

これを各ビューごとに設定している絞込条件&ソート条件を残しつつ、更に検索窓から

検索した条件をandで追加する場合はどのように行ったら良いでしょうか。

以前に、kintone.app.getQueryCondition();関数を使用すると出来るということを聞いた

のですが、どのように設定した良いかわからず躓いております。

お手数でございますが、ご教授いただければ幸いです。

よろしくお願いいたします。

Nao さん

kintone.app.getQueryCondition();を使う場合、取得した条件式から、前回の「coed + ’ like ’ + keyword」の部分を
新しい「coed + ’ like ’ + keyword」に置き換える必要があります。

対応方法としては、「条件式を解析して、新しい条件式を組み立てる」ことになります。
処理方法は、「正規表現で置き換える」などがあります。

条件式の解析は、かなり面倒ですので、簡易的に kintone.app.getQueryCondition();を使わず、
固定の条件式に新しい「coed + ’ like ’ + keyword」を追加するほうが簡単です。
使い勝手に少し制約が生じますが、実用範囲内かと思います。

ご参考に、有償ですが 一覧絞り込みプラグインで、一覧の絞り込み処理を行っていますので、よろしければご検討ください。

rex0220 様

ご返信ありがとうございます。また、プラグインのご紹介もありがとうございます

固定の条件式に新しい「coed + ’ like ’ + keyword」を追加するほうが簡単です。

上記は、各ビューごとに設定している条件式を

viewid等でifで分岐して各ビューごとの条件式を「coed + ’ like ’ + keyword」に追加設定するということでしょうか。

度々お手数でございますが、ご確認お願い致します。

はい。

実装方法は、Nao さんが分かりやすい方法でいいと思います。

if の他には、viewid 別の条件式をオブジェクトで定義しておき、 viewid で取り出すなどがあります。

var conditions = {
1234: ‘XXX = 1 and YYY = 2’,
5678: ‘XXX = 3 and YYY = 4’,
};

rex0220様

ご返信ありがとうございます。

viewid等でifで分岐する方法なんですが、現在4つのビューがあり、下記のように設定しております。

//どのviewIdにも合わなければ処理をしない
if (event.viewId !== 0000001 || event.viewId !== 0000002 || event.viewId !== 0000003 || event.viewId !== 0000004){
query2 = "";
//viewIdが1or3であれば
}else if(event.viewId == 0000001 || event.viewId == 0000003){
query2 = coed2 + ' in ' + '("項目1")' + ' and ' + coed3 + ' not in ' + '("区分1")';
//viewIdが2or4であれば
}else if(event.viewId == 0000002 || event.viewId == 0000004){
query2 = coed2 + ' in ' + '("項目2")';
}

ですが、どのビューにしても処理が実行されないのですが、

ifの式に記載の間違いはありますでしょうか。

度々お手数でございますが、ご確認お願い致します。

論理和だと、どれでも true になります。

if (event.viewId !== 0000001 && event.viewId !== 0000002 && event.viewId !== 0000003 && event.viewId !== 0000004){

または、

if ([0000001,0000002,0000003,0000004].indexOf(event.viewId) < 0) {

rex0220様

ご返信ありがとうございます。

ご教授いただいたように設定し、絞込設定ができました。

ありがとうございます。

今回はビューが4つだけだったので何とかif分岐で出来ましたが

多くなると大変そうなので、ご紹介いただいたプラグインを社内へ提案してみます。

今後ともよろしくお願いいたします。

試用版もありますので、気軽に試してみてください。

kintone プラグイン試用版