添付ファイル有無 絞込

先日まで添付ファイルの有無を「.」(ドット)でキーワードを含むの設定で絞込を行っていたのですが、

先日サイボウズが検索エンジンの変更を行ったことによりこちらの設定ができなくなりました。

カスタマーに問い合わせたところ、現状添付ファイルの有無の絞込はできないとのことでした。

業務に支障が出ます為、ほかに何か方法がないかご教授頂きたいです。

ちなみ.jpやjpのみでキーワードを含む設定で絞込を行っても絞り込めません。

jpgやjpegと最後まで入力しないと絞込できませんので、

複数拡張子がある場合、すべてを満たす条件の設定ができない状況です。

 

dd さん

一覧画面の絞り込み利用してると認識してますが大丈夫ですか?

自分 (.) ドットで絞り込めること知らなかったのですが、今絞り込みを試したところ、有無の確認可能でした。できるか試してもらってもいいでしょうか?

拡張子が複数ある場合は、条件を増やして絞り込みたい拡張子を条件にし、“いずれかの条件を満たす” にチェックを入れて絞り込みを行わないといけないですね.

試してみましたところやはりできませんでした。

レコードが出てきません。

拡張子で絞り込むことは可能ですが他にも条件があった場合いずれかの条件を満たすではほかの添付ファイルが無いレコードも

出てきてしまう状況です。

dd さん

(.)ドットでの絞り込みなのですが、大変お手数ですけど、以下の情報って提供可能ですか?

・ 絞り込みができてないことが見れるキャプチャ
・ 絞り込み条件が見れるキャプチャ
・ (.) で絞り込みされない添付ファイルの名前
※ 他のユーザーからも見れるので情報漏洩につながる場合は大丈夫ですが、できれば現象発生するダミーデータなどで試して
     キャプチャいただければなと思います。ドメインなどは絶対に見えないようにしてください。

あと、気になって調べたのですが検索エンジンの仕様が変わったタイミングっていつのことです?
公式のお知らせでは、直近だとこのページだと思ってるのですがあってます?

複数の条件で絞り込むときは kintone の標準機能の絞り込み条件だと “いずれかの条件” と “すべての条件” を
組み合わせるのはできないので確かに厳しいですね。

URLクエリ で絞り込めば or と and が使えるので、ある程度はいけると思います。
ただ、絞り込み条件によるのですが、完全に絞り込むのは難しいですね。

下記になります

一覧の絞込を利用しても同じ症状です

検索エンジンの移行は問い合わせて聞いたことなので

その記事の通りかと思います。

 

キャプチャの提供ありがとうございます。絞り込まれてないですね…

> その記事の通りかと思います。
記事内で “順次変更予定” とあるので、まだ環境ごとにエンジンの動作に差異があるのかもしれないですね、失礼しました。

検索の仕様調べてみるとそもそも記号がダメっぽいので、dd さんの環境が動作として正しいのかもしれないです。

そうなると、有無の確認をする場合は以下の方法になるかな~と思います。

・チェックボックスなどで、フラグとして添付ファイルの有無を確認する
・API 利用して、検索クエリを作成する

運用面で手間が増える、チェックボックスのチェック忘れなどの可能性は出てきますが、選択肢を 1つだけにして添付されている場合は、チェックを入れる、されていない場合はチェックを外し、チェックボックスで絞り込むことで、有無の確認は可能かな~と思います。

また、API であれば、添付されているかどうかの確認は可能なので、添付されているレコードのレコード番号で URLクエリ を使用して絞り込むことも可能になると思います。

サンプルとして作ってみたので、よろしければ参照してください

(function() {
"use strict";
kintone.events.on("app.record.index.show", function(event) {

// 増殖バグを防ぐ
if (document.getElementById('my_index_button') !== null) {
return;
}

const myIndexButton = document.createElement('button');
myIndexButton.id = 'my_index_button';
myIndexButton.innerText = '絞り込みボタン';

myIndexButton.addEventListener("click", function(event) {
var body = {
'app': kintone.app.getId(),
};

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
// success
const records = resp.records;
const array = [];
for(let i = 0; i < records.length; i++) {
const recId = records[i].$id.value;
if(records[i].添付ファイル.value.length === 0) {
array.push(recId);
}
}

// ↓は上の for文をまとめたもの
// const array = records.filter(e => e.添付ファイル.value.length !== 0).map(e => e.$id.value);

const url = "https://サブドメイン.cybozu.com/k/アプリID/?query=";
const query = encodeURIComponent(`レコード番号 in (${array.join(", ")})`);
location.href = url + query;

}, function(error) {
// error
console.log(error);
});
});

kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
});
})();

ただ URLクエリ で絞り込む方法も多すぎると絞り込み条件が多すぎるというエラーが出たと思うのでそこは気を付けてください。

あとは自分は試してないのですが、検索拡張プラグインというプラグインもあります。できるかどうかわかりませんが、お試しもあるので 1度試して可能だったら使うのも手かなと

 

絞込条件は6つぐらいあります。

URLクエリとは一覧に表示できるものなのでしょうか?

一つ思いついたことがありまして、レコードを一つ新たに作成し、

javascriptにて添付ファイルの有無の判定をし

もし添付ファイルがあれば新たに作成したレコードに有りと表示する。

のようなことを思いついてはいたのですがプログラミングの知識が浅く、

添付ファイルの有無判定をどう書けばいいかわからない状態です。

心苦しいですがお力を貸していただけないでしょうか。

URLクエリは以下のような URL の query= の後ろに絞り込みたい条件を指定することで
指定した条件のレコードを一覧に表示する仕組みのことです。

https://{sub-domain}.cybozu.com/k/{appId}/?query={クエリをUTF-8でURLエンコードした文字列}

例えば、レコード番号 = 2 を URLエンコードし、上記の query= に付与した URL を設定することで、
レコード番号 が 2 のレコードだけが表示された一覧を表示することが可能です。
要は、URL から行う絞り込みですが、or と and が同時に使えるので画面からの絞り込みより複雑な条件を指定することが可能です。
エンコードできるサイトは結構あるので、ぜひ試してみてください。覚えると便利ですよ。

> 作成したレコードに有りと表示する。
文字列フィールドなど、それ用のフィールドに表示すると仮定しますね。

添付ファイルの有無判定自体は JavaScript でやるのは難しくはありません。
イベントオブジェクトから添付ファイルフィールドに値を取得して判定します。
レコード作成画面のイベントですと、レコード追加画面作成後の保存成功後イベントですね。
上記にも似たような処理がありますが、イベントでやる場合は、以下のような処理です。

kintone.events.on("app.record.create.submit.success", function(event) {
const record = event.record;

// 添付ファイルにある場合の判定です。
if(record.添付ファイル.value.length !== 0) {
alert("hello");
}

return event;
});

ただ、レコード追加画面作成後の保存イベントだとほかのフィールドを更新する場合は、kintone rest api の
レコード更新 API を使用する必要があるので、そこは注意してください。