契約解除日の翌日以降になったら、雇用形態を「契約終了」になるように考えています。
現在の想定では、Aアプリのレコード一覧画面を開いたタイミングで処理が走り、契約解約日を基準にして処理をします。
その処理自体はできるようになったのですが、雇用形態を変更したら、他のアプリにも登録している雇用形態フィールドも更新したいと考えています。
Aアプリで雇用形態フィールド「契約終了」に変更
⇒Bアプリの雇用形態フィールドを「契約終了」に変更
⇒Cアプリの雇用形態フィールドを「契約終了」に変更
複数アプリでのレコード一括処理という記事を参考にしてみたのですが、まったく見当違いのことをしているのか、最後のPOSTをするタイミングでエラー400が発生しています。
bodyPutの中身が間違っているのかと思うのですが、調べてもよくわからない状況が続いてしまっております。
どのように修正すればよいのかについて、ご教示いただけますと幸いです。
■コード
(function() {
'use strict';
moment.locale('ja');
kintone.events.on('app.record.index.show', function(event) {
let records = event.records;
let today = moment().format('YYYY-MM-DD');
let appID1 = 165; // AアプリのIDを指定する
let appID2 = 160; // BアプリのIDを指定する
let appID3 = 187; // CアプリのIDを指定する
let flg=0;
var body = [];
var bodyBase = [];
// 全データに対して繰り返し処理をする
for(var i = 0; i <= records.length-1; i++){
var dateOfExpiry = records[i].契約解除日.value;
var staffid = records[i].スタッフID.value;
var status = records[i].雇用形態.value;
// 雇用形態が「契約終了」ではなく、契約解除日の翌日以降に達した場合
if (dateOfExpiry < today && status !== '契約終了') {
if(flg!==1) {
flg=1;
}
status = '契約終了';
// 【PUT用】リクエストボディ
var params1 = {
id:staffid,
record: {
雇用形態: {
value: status
}
}
};
var params2 = {
updateKey: {
field:"スタッフID",
value:staffid
},
record: {
雇用形態: {
value: status
}
}
};
// リクエストボディを配列に追加する
bodyBase.push(params1);
body.push(params2);
}
}
// 一件でもflgが1になった場合
if(flg===1){
const bodyPut = {
'requests': [
{
'method': 'PUT',
'api': '/k/v1/records.json',
'payload': {
'app': appID1,
'record':[bodyBase[0]]
}
},
{
'method': 'PUT',
'api': '/k/v1/records.json',
'payload': {
'app': appID2,
'record':[body[0]]
}
},
{
'method': 'PUT',
'api': '/k/v1/records.json',
'payload': {
'app': appID3,
'record': [body[0]]
}
}
]
};
kintone.api(kintone.api.url('/k/v1/bulkRequest.json', true), 'POST', bodyPut, (resp) => {
// success
console.log(resp);
}, (error) => {
// error
console.log(error);
});
}
return event;
});
})();