詳細画面上で関連レコード内の数値を「数値1」フィールドに反映させたい

https://developer.cybozu.io/hc/ja/community/posts/360017851006–%E7%B0%A1%E5%8D%98-query%E3%82%92%E6%9B%B8%E3%81%8B%E3%81%9A%E3%81%AB%E9%96%A2%E9%80%A3%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97-%E9%9B%86%E8%A8%88

上記の記事等、コミュニティ内の関連するスレッド拝読しましたが、目的となる記事にたどり着けませんでした。タイトルの通りとなりますが、編集画面に入らず、詳細画面上で(出来れば一覧画面上)レコード内の「関連レコード」に表示されている数値の合計を同レコード内の「数値1」へ反映する方法を教えて頂きたいです。

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

こんにちは。
どのタイミングで反映するかで色々変わると思いますが(ボタンクリック時?画面表示のタイミング?)

↓こちらを参考に、関連レコードで取得したい値を取得して

関連レコードの件数を取得するワザ

↓こちらのREST APIで「数値1」フィールドの値を更新する

レコードの更新(PUT)

と良いと思います。

「詳細画面 レコード更新」や「一覧画面 レコード更新」などの検索ワードで、
APIを使用する近いコードも見つかりますのでぜひご参考にされてみてください。
↓↓↓
詳細画面でのレコード更新について
・レコード詳細画面でワンクリックで担当者に自分を追加するワザ
・レコード一覧画面に配置したボタンで、各レコードの値を更新したい

ありがとうございます。タイミングとしては詳細画面を開いたタイミングで反映出来れば十分です。

 

参考記事を基に素人なりに奮闘してみます。ありがとうございました。

参考記事を基にチャレンジしてみましたが、コードの理解と組立が出来ずでした。

可能でしたらサンプルコード組み立てて頂けると助かります。。

こんにちは。

理解できなかった箇所と、書いてみられたコードを貼り付けていただけますでしょうか?

処理の流れ的には
(1)GETで関連レコード内のレコードを取得(何を取得したいのかわからないですが)
(2)PUTで数値1を(1)で取得したデータで更新する
(3)内部的には更新されているが見た目は更新されないはずなので画面をリロードする(工夫必要)

という流れになるとおもいます。

(1),(2)のそれぞれの機能は下記リンク先のサンプルコードを少しいじって
https://developer.cybozu.io/hc/ja/articles/202331474
https://developer.cybozu.io/hc/ja/articles/201941784
https://developer.cybozu.io/hc/ja/articles/213209606

(1)GETで関連レコード内のレコードを取得(何を取得したいのかわからないですが)

// 関連レコードで取得しているアプリの対象レコードを1件取得
var Id = kintone.app.getRelatedRecordsTargetAppId("関連レコードフィールドのフィールドコード");
var params = {app: Id, id: "関連レコードのレコード番号"};
kintone.api(kintone.api.url('/k/v1/record', true), 'GET', params).then(function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});

(2)PUTで数値1を(1)で取得したデータで更新する

// 数値1フィールドを上書きする
var body = {
'app': kintone.app.getId(),
'id': "レコード番号",
'record': {
'数値1': {
'value': 【上書きしたい値】
}
}
};
kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});

(3)内部的には更新されているが見た目は更新されないはずなので画面をリロードする(ループしちゃうと思うので工夫必要)

location.reload();

実際のところ、javascriptについての構成や基本ルール等基礎的なところから勉強が必要なレベルなので、ただ掲示頂いたコードを貼り合わせる程度しか出来ておりません。

今回についてもまず上記をつなぎ合わせてみました。

(function() {

    “use strict”;

    //レコードの追加、編集、詳細画面で適用する

    var events = [‘app.record.detail.show’,

                  ‘app.record.edit.show’];

    kintone.events.on(events, function(event) {

// 関連レコードで取得しているアプリの対象レコードを1件取得

var Id = kintone.app.getRelatedRecordsTargetAppId(“関連レコード一覧”);

var params = {app: Id, id: “関連レコードのレコード番号”};

kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘GET’, params).then(function(resp) {

  // success

  console.log(resp);

}, function(error) {

  // error

  console.log(error);

});

// 数値1フィールドを上書きする

var body = {

    ‘app’: kintone.app.getId(),

    ‘id’: “レコード番号”,

    ‘record’: {

      ‘有給消化日数’: {

        ‘有給消化数計算’: 【上書きしたい値】

      }

    }

  };

  kintone.api(kintone.api.url(‘/k/v1/record.json’, true), ‘PUT’, body, function(resp) {

    // success

    console.log(resp);

  }, function(error) {

    // error

    console.log(error);

  });

 

  location.reload();

 

});

})();

おはようございます

有給消化数はタイミングによって変動しますよね。
毎回更新で良いのでしょうか?集計機能(標準機能の)を使って有給消化数を集計するのもありかも知れません。
有給消化数を標準機能でなんとかする方法でしたら、
キンコミ」というコミュニティでディスカッションされると良いかも知れません。

キンコミで有給を検索

話がそれてしまいましたが、ちなみに書かれたコードは動かしてみられたでしょうか??
「javascriptについての構成や基本ルール等基礎的なところから勉強が必要なレベル」とのことで、
ここでコードの内容を理解いただきながらというのは、やり取りも長くなりそうですしなかなか難しそうな気がしています:sweat_drops::sweat_drops:
かといって、ここで私がコードを組み立ててしまうのはコミュニティの主旨的にも、ジェシーおいたんさんのためにも良くないと思いますので、申し訳ないですが、機能実現までのヒントを書かせてください:pray:

チュートリアルからまずJavaScriptとkintoneのカスタマイズの基礎を学習していただくことをおすすめしたいです。

そして、サイボウズさんが主催の無料のkintoneのカスタマイズの講座、現在、申し込み募集中みたいです!
※大人気講座で、オススメです。非エンジニアの方も参加されているみたいです。

ステップで学ぶkintoneカスタマイズ

また、JavaScriptについてはインターネット上にも無料でJavaScriptが学べるコンテンツもあったりします。

progate
ドットインストール
【JavaScript超入門講座】わずか50分で知識ゼロから基礎をマスター!

Qiitaというサイトに参考になるコードが置かれている場合もあります。
Qiita内で「kintone 詳細画面」で検索

それと、こういった質問コミュニティで提示されたサンプルコードを並べるだけというのは危険もあります:sweat_drops:
回答者には質問者の背景がわからなくて想像でコード書かざるを得なかったり、
何か致命的なバグがあった場合などには責任が持てなかったり、
バグのあるコードを利用した側もどこを修正すればよいかわからなかったり、困ることも多いかと思います。

回答者の方は皆さんボランティア回答者です。
日頃はお仕事でお金をもらいながらコードを組み立ててカスタマイズをしていたりしますので、そういった方がいらっしゃる手前、解答をポンと書いてしまうのは良くなかったりします^^;
どうしてもという場合は相談できるパートナーさんにお願いするのがいいかも知れません。
パートナーを探す

長くなり、また失礼なことを書いたかも知れないですが、やりたいことの実現応援しております!