新規投稿
フォローする

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

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

13件のコメント

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
Avatar
村田 武信

恐れ入ります。こちらのプラグインですが、ゲストスペースでは利用不可能でしょうか。

同kintone環境内の公開スペースではきれいに表示できたのですが、ストスペース内では設定画面を開いても設定用のテーブルが表示されませんでした。

1
Avatar
小西 雅之

江田様

初めまして。JavaScriptカスタマイズ初心者の小西と申します。
江田様の「【簡単】queryを書かずに関連レコードを取得&集計」の投稿にあるコンストラクタと利用例のコードのお陰で、1ヶ月ばかり悩んでいた関連レコードの集計ができるようになりました。本当に、ありがとうございました。

さて、上記村田様のコメントにも書かれておられるように、こちらのプラグインは、ゲストスペースでは利用できないのでしょうか?


実は、私どもの事業で、登録相談員の方々の活動に対して、報酬と交通費の支払を「報酬・交通費申請」アプリで申請してもらい、「給与明細書」アプリの「関連レコード」を使って前月分の報酬と交通費を集計させて、前月1ヶ月分の報酬合計と交通費合計、源泉徴収額、支払総額の計算させたいと思っています。

しかし、今まで「関連レコード一覧」フィールドの設定の「さらに絞り込む条件」で、訪問日(日付フィールド)の日付から「先月」を条件に絞り込んでいたのですが、月が変わると当然のことながら、「翌月」(つまり「今月」)の報酬・交通費の申請の集計になってしまい、支払総額そのものが変わって、過去の支払履歴を残していけないことに気づきました。
そこで、それぞれのアプリで「指定月」(文字フィールド)の項目を追加し、DATE_FORMAT関数で「202109」というような文字列を生成させ、その文字列を判定値に指定して絞り込もうとしたのですが、フォーム内のフィールドを判定値に指定して、値を表示させる機能が未搭載だったため、また暗礁に乗り上げてしまいました。
でも、江田様のこのプラグインのことを知り、使わせて頂こうとインストールしたのですが、プラグインの設定画面が真っ白のままで、条件設定ができません。どちらのアプリもゲストスペースで使っています。
ご教授いただけないでしょうか? よろしくお願い申し上げます。

小西 雅之により編集されました
1
Avatar
江田篤史

小西さん

お世話になっております。
返信が遅くなり申し訳ございません。

申し訳ございませんが、ゲストスペースについては対応しておりません。

オープンソースとなっているので、forkして改修等していただくのは全く問題ございません。(読みやすいコードではありませんが…)
https://github.com/Atsushi-Eda/custom-reference-table/

0
Avatar
小西 雅之

江田様

お忙しい中、ご返答いただき、ありがとうございました。
果たして私に改修できるかわかりませんが、挑戦してみます。
またわからないことがありましたら、質問をさせてください。
よろしくお願いします。

小西 雅之により編集されました
0
サインインしてコメントを残してください。