背景・実現したいこと
レコード詳細画面を開いた際、
「①サブテーブルの各レコードが保持する着任日から現在までの経過年月を計算し、
** ②各レコードの経過年月フィールドに更新したい」**
サブテーブルが1レコードのときはうまくいきました。(画面の通り)
②については、複数レコードの場合は最終レコード以外は消え、
最終レコードの経過年月の更新のみ成功します。
自分が書いたコードですと、各レコード計算(33行目のForEach)毎にPUTしてしまっているのが
原因とは分かっているのですが、59行目のPUTを62行目にもっていくと、「更新でエラーが発生しました。paramPUT is not defined」のalertが出てしまいます。
お知恵を拝借頂けると助かります。
エラー情報
show.js:137 Uncaught TypeError: Cannot read property ‘then’ of undefined
このエラーが出てしまう理由も分かりません。(61行目のthenでエラー)
利用したソースコード
jQuery.noConflict();
(function() {
“use strict”;
// ロケールを初期化
moment.locale(‘ja’);
// 今日までの年月計算
function getYearMonth(dtDate) {
var dtToday = moment();
var dtFrom = moment(dtDate);
var years = 0;
var months = 0;
// 入力日が過去日付の場合計算
if (!dtToday.isBefore(dtFrom, ‘day’)) {
years = dtToday.diff(dtFrom, ‘years’);
months = dtToday.diff(dtFrom, ‘months’) % 12;
}
return years + '年 ’ + months + ‘ヶ月’;
}
kintone.events.on([“app.record.edit.show”,“app.record.detail.show”], function(event) {
var record = event.record;
var appId =kintone.app.getId();
var recId =kintone.app.record.getId();
var paramGet = {
‘app’: appId,
‘id’: recId
};
return kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘GET’, paramGet).then(function(resp) {
var record = resp.record;
var tableRecord = record.Table.value;
record.Table.value.forEach(function(row) {
var tableId = row.id;
// alert(row.id + row.value.氏名.value);
var keikaNengetsu = getYearMonth(row.value.着任日.value);
var paramPut = {
‘app’: appId,
‘id’: recId,
“record”: {
“project”: {
“value”: record[‘project’].value
},
“Table”: {
“value”: [
{
“id”: tableId,
“value”: {
“経過年月”: {
“value”: keikaNengetsu
}
}
}
]
}
}
};
return kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, paramPut);
}).then(function(resp2) {
alert(‘更新が完了しました’);
return event;
}).catch(function(error) {
// エラー表示をする
alert(‘更新でエラーが発生しました。’ + error.message);
return event;
});
});
});
})();