【フォームブリッジ】kViewerルックアップ ID毎の検索結果非表示機能

kViewerルックアップの検索にて、IDを条件にして、一部検索結果を表示させないようにしたいです。

<例>

ID=Aの場合、ルックアップ先の特定フィールドが”B”のレコードは検索結果として表示されない。

kViewer側のカスタマイズかクエリなどでも実装できるような気がしているのですが、教えていただいてもよろしいでしょうか。

 

永見 風馬さん

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

ルックアップに複数の条件を指定したいということで、認識間違いないでしょうか?

現在、kViewerルックアップでは複数条件を指定することはできません。

kViewerの外部公開APIとFormBridgeのJavaScriptカスタマイズを用いて、kViewerルックアップ的な機能を自作するなどが解決策かと思います。

kViewerルックアップのようなUIまで自作するのはコストが高いので、下記のような代替策もございます。
https://developer.cybozu.io/hc/ja/articles/360033455531
kViewerルックアップで取得後、FormBridgeのJavaScriptカスタマイズでkViewerの外部公開APIでレコードを確認しています。

ご回答いただき、ありがとうございます。

 

質問がわかりづらく、申し訳ございません。

フォームブリッジへのログインID(簡易認証)を基に、kViewerルックアップで表示される検索結果の閲覧制限を行いたいです。

<例>

ルックアップ対象アプリのレコード

1 商品1 販売先:A社

2 商品2 販売先:B社

3 商品3 販売先:A社

上記の場合に、A社がフォームブリッジにログインした際は、商品1と商品3のみルックアップの検索結果に表示され、

B社がフォームブリッジにログインした際は、商品2のみルックアップの検索結果に表示されるようにしたいです。

加えて、ログインユーザーには、上記絞り込み条件が変更できないようにしたいです。

(A社のIDでログインした場合は、どのような場合でも商品2は表示不可としたい)

こちらで再度ご確認いただいてもよろしいでしょうか。

 

 

 

永見 風馬さん

その場合ですと、下記記事が参考になるかと思います。
https://kintoneapp.com/blog/webform_login/

入力不可にするには、下記のようにJavaScriptカスタマイズすると良いかと思います。

(function () {
  'use strict';
  fb.events.form.mounted.push(function (state) {
    var fieldCode = ' __authenticationUsername__'; //ルックアップフィールドのフィールドコード
    var input = fb.getElementByCode(fieldCode).getElementsByTagName('input')[0];
    input.setAttribute('disabled', 'true');
    new MutationObserver(function(){
      if (!input.getAttribute('disabled')) {
        input.setAttribute('disabled', 'true');
      }
    }).observe(input, {attributes: true});
  });
})();

ただし、ユーザーがブラウザのデベロッパーツールなどを用いてDOMを編集した場合は、書き込みできてしまうのでお気をつけください。
また、kViewerの外部公開APIで情報公開している以上、URLを知っているユーザーはkViewerルックアップでフィルターをかける前のデータを閲覧することができるので、機密情報の取り扱いにはご注意ください。