カンマ区切りの複数Keyで複数レコードをupdateKeyで更新したい

背景・実現したいこと

カンマ区切りで複数のKeyが登録されているレコードがあって、それをもとに別アプリの該当のkeyを持つ複数のレコードを更新したいと考えています。

具体的には安否確認のアプリで防災のリーダーが複数人の安否情報を1レコードで登録したら別アプリの名簿の該当の人それぞれの安否情報が更新されるようにしたいです。

考えた方法は安否確認アプリに社員コードがカンマ区切りで入るようにし、それを登録した段階でカンマ区切りを配列に登録、foreachでupdateKeyで更新を回すという形です。

実際に動かしてみると安否アプリは登録されますが、名簿のほうは更新されませんでした。

エラー情報

コンソールを見るとUncaught (in promise) <empty string>と出ていますが調べてもよくわからず。。

コードを張り付けますので何がおかしいか、そもそも実現可能なのかアドバイスをいただければありがたいです。

利用したソースコード

(function () {
"use strict";
kintone.events.on(['app.record.create.submit.success', 'app.record.edit.submit.success'], function(event){
var staffIDs = event.record.staffID.value.split(',');
staffIDs.forEach(function(item){
return kintone.api('/k/v1/record', 'PUT', {
app: 186, //緊急連絡先名簿アプリID
updateKey: {
field: "staffID",
value: item
},
record: {
最新の報告日時: {
value: event.record.報告日時.value
},
最新の生存確認: {
value: event.record.生存確認.value
},
最新の所在確認: {
value: event.record.所在確認.value
},
最新の特記事項: {
value: event.record.特記事項.value
}
}
}).then(function(){
return event;
});
});
});
})();

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

こちらを参考にして自分なりに修正をしてみました。

だいぶ分かっていなかったので勉強になりました。

現状はこんなコードになっていますが、エラーが出ています。

Uncaught

Object { code: “CB_VA01”, id: “2RoF1oHJlomOfVGCu0az”, message: “入力内容が正しくありません。”, errors: {…} }

​(function () {
"use strict";
kintone.events.on(['app.record.create.submit.success', 'app.record.edit.submit.success'], function(event){

function createPutRecords(event) {

let csv_arr = event.record.kintoneID.value.split(',');
let putRecords = [];

for ( let i in csv_arr) {
putRecords[i] = {
'updateKey': {
'field': 'kintoneID',
'value': csv_arr[i],
},
'record': {
'最新の報告日時': {
'value': event.record.報告日時.value
},
'最新の生存確認': {
'value': event.record.生存確認.value
},
'最新の所在確認': {
'value': event.record.所在確認.value
},
'最新の特記事項': {
'value': event.record.特記事項.value
}
}
};
}
return putRecords;
}

let return_data = {
'app': 186,
'records': createPutRecords(event)
};

//console.log(return_data);

return kintone.api('/k/v1/record', 'PUT', return_data).then(function(){
return event;
});
});
})();

 

こんにちは!

1件ずつ更新するのではなくて、該当するレコードを一括更新するようにしたのですね!
パッと見た感じですが、最後の

return kintone.api(‘/k/v1/record’, ‘PUT’, return_data).then(function(){

ですが、
‘/k/v1/record’ → ‘/k/v1/records’
複数レコードを更新するので、recordsです。

お試しください(><)

なんと!

ご指摘の部分を修正することで動作いたしました。

ありがとうございます!
いくら考えもわからなかったので助かりました!