showイベントでのレコードの更新について

kintone歴 1か月です。

 

今回、レコード一覧表示を実施したときに

ある特定のコードの値を更新したいと考えています。

 

具体的には

一覧表示をしたときに

レコードの2番目から末尾までのある特定の値を合計して

レコードの1番目の特定のフィールド(数値)に格納する

といったことをやりたいです。

 

https://developer.cybozu.io/hc/ja/articles/203331050 

↑ここで実施している更新をshowでやりたいと思っています。

 

下記を見る限りではできるのではないかと思っています。

(更新不可のフィールドに数値も入っていないので…)

https://developer.cybozu.io/hc/ja/articles/201941984#step4

 

(function() {

"use strict";

 
kintone.events.on(['app.record.index.show'], function (event){

console.log(event.records);

event.records[2].実績値.value=3000;

console.log(event.records);

return event;

});

})();

 

レコードの計算はあととして、まず上記のようなソースを作って実行してみましたが、ログで出てくる変数には値は更新されているように見えますが、

アプリの画面上値は更新されません。

 

https://developer.cybozu.io/hc/ja/community/posts/115010521786-%E4%BB%96%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97-%E6%9B%B4%E6%96%B0%E5%87%A6%E7%90%86-%E4%B8%80%E8%A6%A7%E7%94%BB%E9%9D%A2-

 ↑こちらにも似たような質問がありましたが

解決策が得られなかったので、皆様のお力を借りたく

質問させていただきました。

 

 https://developer.cybozu.io/hc/ja/articles/202640870-%E4%BA%88%E7%AE%97%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A8%E5%AE%9F%E7%B8%BE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E9%9B%86%E8%A8%88%E8%A1%A8%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B

 ↑また、コチラの方法だとshowでも値の抽出はできていそうですが

カスタムビューにせずに同じようにする方法などありますか?

(jqGridへのpushではなく、表のフィールドへ値を格納)

 

 

何かわかることがあればぜひご教授ください。

tanaka-r さん

showイベントではレコードの値は変更できないため、kintone REST APIによるPUT処理をしてみてはどうでしょうか。

以下簡単なプログラムです。ただしこれだと一覧画面を開くたびに更新処理が走ってしまうので、別途ボタン等を配置して

ボタンが押されてたら更新、といった処理のほうが良さそうです。

(function() {

'use strict';
kintone.events.on(['app.record.index.show'], function(event) {

// レコード2から末尾までの計算
//

// kintone REST API の実行
var params = {
app: kintone.app.getId(),
id: 1, // 変更したいレコードID
record: {
'field': { // 変更したいフィールドコード
value: '計算した結果の挿入したい値'
}
}
};
kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params, function(resp) {
console.log(resp);
});
});
})();

BB様

回答ありがとうございます。!

そして反応が遅くなってしまい大変申し訳ありません。

 

show()は値の変更ができないんですね。。

いただいたサンプルをもとに実装してみたところ

想定の動作が出来ました。!

ありがとうございます。

(PUT処理の書き方もちょっとあいまいなところがあって理解できました。ありがとうございます!)

 

図々しく追加をしてしまって申し訳ないのですが

今回は特定のレコードの更新をしたいので、いただいた回答で

仕様を満たせそうですが、

もし、複数レコードの更新をしたいと思った時にループなどで

paramsを生成することはできるのでしょうか?

(書き方といいますか…サンプルはベタで書いてたので

https://developer.cybozu.io/hc/ja/articles/201941784#step2

 

下記のidとvalueが異なる複数のイメージです。

var params = {
app: kintone.app.getId(),
id: 1, // 変更したいレコードID
record: {
'field': { // 変更したいフィールドコード
value: '計算した結果の挿入したい値'
}
}

 

よろしければご回答お願いします。

(スレ変えた方がいいなどあればご指摘ください。)