新規投稿
フォローする

カスタム関連レコードプラグイン (絞り込み条件に自アプリのレコード値利用可)

kintoneの関連レコードの「さらに絞り込む条件」では、自アプリのレコード値を利用できません。 それを解消する、関連レコード機能チックなプラグインを作成しました。

プラグインファイル

下記からダウンロードしてください。
https://github.com/Atsushi-Eda/custom-reference-table/raw/master/plugin.zip

利用例

購入履歴アプリに、カスタム関連レコードプラグインを設置します。 キャンペーンアプリから、購入日が期間内となるキャンペーンを取得します。 表示は、レコード詳細画面の指定したスペースフィールド内に行います。

プラグイン設定

space

  • カスタム関連レコードを表示するスペースフィールドの要素ID。
  • グループフィールド内のスペースフィールドは選択できません。
  • レコード追加画面、レコード編集画面では表示しません。

app

  • 参照するアプリのID。(半角数字)
  • アプリIDを入力後、searchボタンを押す。

conditions

  • レコードの絞り込み条件式。
  • 複数の場合は、andで評価。

conditions[].targetField

  • 絞り込み条件式に用いる、参照するアプリ内のフィールド名。
  • 以下のフィールドタイプのフィールドは選択できません。
    「カテゴリー」、「サブテーブル内のフィールド」、「関連レコード内のフィールド」

conditions[].operator

  • 絞り込み条件式に用いる、演算子。
  • conditions[].targetFieldに合わせて選択肢が変わります。

conditions[].selfField

  • 絞り込み条件式に用いる、自アプリ内のフィールド名。
  • 以下のフィールドタイプのフィールドは選択できません。
    「サブテーブル内のフィールド」、「関連レコード内のフィールド」

shows

  • 表示するフィールド。

shows[].field

  • 表示するフィールドのフィールド名。
  • 「添付ファイル」は画像ファイルの場合も、サムネイル表示しません。
  • 「ユーザー選択」、「組織選択」、「グループ選択」等はアイコンを表示しません。
  • 以下のフィールドタイプのフィールドは選択できません。
    「サブテーブル内のフィールド」、「関連レコード内のフィールド」

sorts

  • レコードのソート条件式。

sorts[].field

  • ソート条件式に用いる、参照するアプリ内のフィールド名。
  • 以下のフィールドタイプのフィールドは選択できません。
    「作業者」、「カテゴリー」、「文字列 (複数行)」、「リッチエディター」、「チェックボックス」、「複数選択」、「添付ファイル」、「ユーザー選択」、「組織選択」、「グループ選択」、「サブテーブル内のフィールド」、「関連レコード内のフィールド」

sorts[].operator

  • ソート条件式に用いる、演算子。

※プラグインに利用しているフィールドの設定に変更があった場合は,プラグイン設定をやり直してください.

API

JavaScriptカスタマイズ用にAPIを用意しております。 カスタム関連レコードと同条件でレコード取得が可能です。 プラグインJSの読み込み完了後に利用可能です。

customReferenceTablePlugin.getRecordsFromSingleReferenceTable(index, record)

アプリ内の指定する1つのカスタム関連レコードと同条件でレコードを取得します。

引数

返り値

Promiseオブジェクト

customReferenceTablePlugin.getRecordsFromAllReferenceTables(record)

アプリ内の全てのカスタム関連レコードと同条件でレコードを取得します。

引数

返り値

Promiseオブジェクト

APIの利用例

カスタム関連レコードの値を用いて、値段_割引後を計算します。

コード

JavaScriptカスタマイズにて、下記「sample.js」を読み込みます。

・sample.js

(function() {
  "use strict";
  kintone.events.on([
    'app.record.create.submit',
    'app.record.edit.submit',
  ], function(event){
    return customReferenceTablePlugin.getRecordsFromSingleReferenceTable(0, event.record).then(function(response){
      var multiplier = response.records.reduce(function(multiplier, record){
        return multiplier * (1 - record.割引.value/100);
      }, 1);
      event.record.テーブル.value.forEach(function(row){
        row.value.値段_割引後.value = row.value.値段.value * multiplier;
      });
      return event;
    });
  });
})();
2

9件のコメント

Avatar
Mayuko Yamamoto

はじめまして。

こちらのプラグインに大変お世話になっております。

やりたいことが簡単に実装でき、私のような初心者でもスムーズに開発をすすめることができており感謝しております。

ひとつ、可能かどうかの質問をさせていただきたいのですが、

こちらのプラグインを使用して表示した関連レコードを、レコード編集画面から印刷すると空欄となってしまいます。

ブラウザの印刷機能を使用した場合は問題なく表示されます。

レコード編集画面の「印刷」より、印刷することは可能でしょうか?

 

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

0
Avatar
江田篤史

Mayuko Yamamoto様

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

ご指摘ありがとうございます.

印刷画面に対応いたしました.

下記から再度ダウンロードして,kintoneに読み込ませていただければと思います.
https://github.com/Atsushi-Eda/custom-reference-table/raw/master/plugin.zip

1
Avatar
Mayuko Yamamoto

江田様

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

まさか、こんなに早々に対応していただけるとは思わず、大変うれしく思います。

誠にありがとうございます!

ただ、、、、申し訳ありません、私の環境ではまだ印刷ができそうもなく、

なにか特別な設定などありますでしょうか?

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

 

 

 

Mayuko Yamamotoにより編集されました
0
Avatar
江田篤史

Mayuko Yamamoto様

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

変更前のファイルがキャッシュされてしまっているのかもしれません.

一度,下記のリンクで試していただけますか?
https://github.com/Atsushi-Eda/custom-reference-table/releases/download/v0.1.1/plugin.zip

1
Avatar
Mayuko Yamamoto

江田様

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

早々にご返信いただき、ありがとうございます。

今再度試してみたんですが、やはり同じですね。。。

私のプラグインのインストールの方法が間違っている可能性もありますでしょうか?

・一旦Kintoneからプラグインを削除

・同じアプリに再度別プラグインをインストール

・再設定

このような流れで再インストールを行っています。

 

ちなみに、印刷時に背景印刷をしてみましたが、こちらも印刷サれませんでした。

私はGoogle chromeを使用していますが、ブラウザの指定などもありますでしょうか?

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

0
Avatar
江田篤史

Mayuko Yamamoto様

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

プラグインのインストールの方法は正しいと思います.
一度削除せずとも,そのまま再度zipファイルを読み込めば,上書きもできます.

私もGoogle Chrome(v85.0.4183.121)を利用しております.
記事のアプリですと,下記のような印刷画面になります.

残りの可能性として,印刷ページ読み込み時のJSやCSSがキャッシュされているのかもしれません.
ページのスーパーリロードをお試しいただけますか?
windows版chromeの場合: Ctrl+Shift+R
mac版chromeの場合: Cmd+Shift+R
のショートカットでスーパーリロードできます.
https://www.softantenna.com/wp/tips/chrome-reload-web-page/

1
Avatar
Mayuko Yamamoto

江田様

お世話になります。

スーパーリロードや再起動、PCをWindowsに変更したりして試してみたのですが、

状況変わらずといった感じです。

現在、アプリ側ではPrint.jsとPrint.cssを読み込んでいます。

こちらが悪さをしている可能性はありますでしょうか?
個別にCSSは一切指定していません。

お忙しいところ重ね重ね申し訳ございません。

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

Mayuko Yamamotoにより編集されました
0
Avatar
Mayuko Yamamoto

江田様

お世話になります、山本です。

大変申し訳有りません、無事表示されました!!!

私がJavaScriptの指定の部分で、以下の様な表記をしておりました!!!

これをすべて削除したところ、無事表示されました!!

大変情けなくお恥ずかしい限りです。。。

 

(function() {
    'use strict';
  
    // 印刷画面が表示されたときに動作
    kintone.events.on('app.record.print.show', function(event) {

        // 画面下部の「見積日(加工用)」、「見積有効期限(加工用)」、「メモ」を非表示
/*        kintone.app.record.setFieldShown('quotation_date', false);
        kintone.app.record.setFieldShown('expiration_date', false);
        kintone.app.record.setFieldShown('memo', false);*/

        // 下記フィールドの枠線を非表示、背景色をkintone全体の背景色と同じに設定
        // 「会社名」、「見積番号」、「見積日」、「印影」、「見積有効期限」、「小計」、「消費税」、「合計金額」
       var fields = ['name'];
        for (var i = 0; i < fields.length; i++) {
            var field = fields[i];
            var element = kintone.app.record.getFieldElement(field);
            element.style.backgroundColor = '#f5f5f5';
            element.style.borderWidth = '0px';
            element.style.color = '#000000';
            element.style.right = '-100px';
        }
        var fields2 = ['time'];
        for (var str = 0; str < fields2.length; str++) {
            var field2 = fields2[str];
            var element2 = kintone.app.record.getFieldElement(field2);
            element2.style.backgroundColor = '#f5f5f5';
            element2.style.borderWidth = '0px';
        }

    });

})();
Mayuko Yamamotoにより編集されました
0
Avatar
Mayuko Yamamoto

初心者の私のミスで、貴重なお時間を割いてしまい申し訳ありません。
無事に印刷できて、本当に感無量です!

最後まで返信をくださり本当にありがとうございます。
これからもこのプラグインはとても便利なので、
活用させていただきたいと思います!

また、お世話になることもあるかと思いますが、どうぞよろしくお願いいたします。

この度は、早々にご対応くださりありがとうございました!

 

Mayuko Yamamotoにより編集されました
1
サインインしてコメントを残してください。