●したいこと
日付フィールド(試験日)
数値フィールド(経過日数2)を準備し、
日付フィールド(試験日)に入力された日付から今日時点の経過日数を反映させたい。
一覧画面でボタンを設置し、ボタンクリック後経過日数が都度更新されるようにしたい
●作成したコード
(function() {
"use strict";
// レコードの取得
var getRecords = function(app) {
var getBody = {
app: app
};
var response = kintone.api(kintone.api.url('/k/v1/records', true), 'GET', getBody);
response.then(function(records) {
console.log(records);
});
return response;
};
// 経過日数の計算と更新
var updateElapsedDays = function(records) {
var putBody = {
app: kintone.app.getId(),
records: []
};
var today = new Date();
records.forEach(function(record) {
var startDate = new Date(record.試験日.value);
var elapsedDays = Math.floor((today - startDate) / (1000 * 60 * 60 * 24));
putBody.records.push({
id: record.$id.value,
record: {
経過日数2: {
value: elapsedDays
}
}
});
});
if (putBody.records.length > 0) {
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', putBody);
} else {
return Promise.resolve();
}
};
// ボタンのクリックイベント
var handleButtonClick = function() {
getRecords(kintone.app.getId())
.then(function(response) {
var records = response.records;
return updateElapsedDays(records);
})
.then(function() {
alert('経過日数を更新しました。');
location.reload();
})
.catch(function(error) {
console.error('エラーが発生しました:', error);
});
};
// ボタンの作成
var createButton = function() {
var button = document.createElement('button');
button.innerHTML = '経過日数更新';
button.id = 'updateButton';
button.addEventListener('click', handleButtonClick);
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
};
// 一覧画面表示時のイベントハンドラ
kintone.events.on('app.record.index.show', function(event) {
if (!document.getElementById('updateButton')) {
createButton();
}
return event;
});
})();
一覧画面へボタンは表示できたのですが、エラーも出ず更新もされません。
勉強し始めド素人のため、原因が分からず行き詰まってしましました。
お力、お知恵を貸していただけますと幸いです。どうぞよろしくお願いいたします。
1件のコメント
エラーがでないというのはデバッグなどはしてるということですかね?
もしコンソールとか見てなかったらまずはためしていただくと回答はつきやすいですがどうでしょうか。
https://cybozudev.zendesk.com/hc/ja/articles/4977994758297-kintone-JavaScript-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%BE%E3%81%A8%E3%82%81#check-errors