テーブルの数値フィールドの数値を他の数値フィールドにコピー(転記)できますか?

はじめまして 秋葉と申します。

JavaScriptni関する質問がございます。

どなたか、ご回答いただけませんでしょうか?

服用するお薬と、服用時ごとの服用数を登録するテーブルがあります。

テーブルの数値フィールドへ入力された時点で、他の数値フィールドにコピー(転記)するという設定をしたいのですが。可能でしょうか?

参考までに下図もご覧いただければ幸いです。

可能です。

サブテーブルの値を変更したタイミングで、転記先フィールドにコピーするようなスクリプトを書けばいいかと思います。下記が参考になるかと思います。

参考: レコード編集画面のフィールド値変更時イベント

参考: 第6回-サブテーブルの値を利用する

村濱様

ご対応いただきまして、ありがとうございます。

ご教示いただいた通りで可能なように思います。

ただ、まだよく解らない点がございます。

参考の「第6回 サブテーブルの値を利用する」では、サブテーブルに入力した 数値 でなく、 合計値スペースフィールド に集計させるスクリプトです。

サブテーブルに入力した 数値フィールドの数値別の数値フィールド へ転記(コピー)させるようなスクリプトを設定したいので、下記の参考ページに記載されていたスクリプト(1部分)を書き換えなければならないとは、理解しています。

もし可能であれば、書き換えるべき、サブテーブルに入力した 数値フィールドの数値別の数値フィールド へ転記(コピー)させるようなスクリプトについてご教示いただけませんでしょうか?

``// テーブル内の各レコードをカテゴリごとに集計する

``for (``var i = 0; i < tableRecords.length; i++) {

``var category = tableRecords[i].value[``'カテゴリ'``].value;

``if (!subTotals[category]) {

``subTotals[category] = 0;

``}

``var number = tableRecords[i].value[``'個数'``].value;

``var price = tableRecords[i].value[``'単価'``].value;

``subTotals[category] += price * number;

``}

 

``// 集計結果をスペースフィールドに表示する

``var myTotalSpace = document.createElement(``'ul'``);

``for (``var category ``in subTotals) {

``var categorySpace = document.createElement(``'li'``);

``categorySpace.innerHTML = category + ``': ' + subTotals[category] + ``'円'``;

``myTotalSpace.appendChild(categorySpace);

``}

 

``kintone.app.record.getSpaceElement(``'sub_total_area'``).appendChild(myTotalSpace);

``});

})();

> もし可能であれば、書き換えるべき、サブテーブルに入力した 数値フィールドの数値別の数値フィールド へ転記(コピー)させるようなスクリプトについてご教示いただけませんでしょうか?

書き換えるといいますか、今回の場合は、前述の記事を参考にしながら、ゼロから書くことになると思います。(”書き換える”にせよたくさん書き換えることになるのでゼロから書くのと同義です。)

手順を下記に示します。

  1. サブテーブルの編集イベントが発生したときに、
  2. サブテーブルのデータを取得し、
  3. 任意のフィールドにコピーする

という手順です。
1.と2.に関しては前のコメントの記事を参考にしていただき、
3. は下記を参考にしてください。

フィールドの値を書き換える


具体的なコードで言うと下記のようになります。
そちらの環境や仕様、アプリの設定を全て考慮することはできませんので、
あくまでサンプルの掲示だということをご了承ください。

例)サブテーブルが変更されたとき、1行目の「朝」データを取得し転記する

// フィールドコードはご自身のアプリに合わせて読み替えてくださいkintone.events.on(['app.record.create.change.サブテーブル','app.record.edit.change.サブテーブル'],function(event) {    varrecord = event.record; var morning1 = record['サブテーブル']['value'][0]['朝']['value']; // 1行目の「朝」のデータを取得    record['転記先フィールド1']['value'] = morning1; // 取得したデータを転記    returnevent;});

上記は極力シンプルにしたコードですので、上記で難しいと思われる場合は、
あらためてJavaScriptとkintoneの学習をしていただくか、どなたかに開発のご依頼をされたほうがいいかもしれません。
(仕様を楽なほうに倒す、という方法ももちろん有りだと思います)

村濱様

ご返信遅くなりました。秋葉です。

その後、色々学びながらアドバイス通り実施しましたら、できました。

本当にありがとうございました。