何を実現したいのかを書きましょう
表示された関連レコード内のカテゴリ別レコード数の集計値をボタンを押したら特定フィールドにセットされるようにしたいです
カテゴリ別レコード数のの集計値をスペースフィールドに表示させることはできています。スペースフィールドに表示させるために取得した値をボタンを押すことでそれぞれ特定のフィールドに値をセットしたいと思ってコード作成を試みています。
発生した問題やエラーメッセージを具体的に書きましょう
ボタンを押してもエラーも何も起こらないので、そもそものコードの書き方が違うのかなと思っています。
作成したコードを貼り付けますので、何がいけないのかわかる方いらっしゃいましたらアドバイスいただきたいです
実行したコードをコピー&ペーストしましょう
(() => {
'use strict';
const events = [
'app.record.detail.show',
'app.record.edit.show'
];
kintone.events.on(events, async (event) => {
const clientRecordId = event.record['日付文字列'].value;
const sagyouAppId = kintone.app.getRelatedRecordsTargetAppId('関連レコード一覧');
const appUrl = kintone.api.url('/k/v1/records');
try {
// 関連レコードを取得
const query = `日付文字列="${clientRecordId}" limit 500`;
const params = {
'app': sagyouAppId,
'query': query
};
const resp = await kintone.api(appUrl, 'GET', params);
// カテゴリ別のレコード件数を集計
let counts = {
'Okazu1keNsu': 0,
'Gohan1keNsu': 0,
'Okazu2keNsu': 0,
'Gohan2keNsu': 0
};
resp.records.forEach(record => {
const factory = record['所属工場'].value;
const category = record['弁当区分2'].value;
if (factory === '第一工場') {
if (category === '1') {
counts['Okazu1keNsu']++;
} else if (category === '2') {
counts['Gohan1keNsu']++;
}
} else if (factory === '第二工場') {
if (category === '1') {
counts['Okazu2keNsu']++;
} else if (category === '2') {
counts['Gohan2keNsu']++;
}
}
});
// カテゴリ別のレコード件数をそれぞれのスペースフィールドに表示
for (const field in counts) {
const divKeNsu = document.createElement('div');
divKeNsu.style.fontWeight = 'bold';
divKeNsu.style.textAlign = 'left';
divKeNsu.style.verticalAlign = 'middle';
divKeNsu.style.fontSize = '12px';
// 下詰めスタイルの追加
divKeNsu.style.display = 'flex';
divKeNsu.style.alignItems = 'flex-end';
const countSpan = document.createElement('span');
countSpan.style.marginRight = '5px';
countSpan.innerHTML = counts[field];
const unitSpan = document.createElement('span');
unitSpan.innerHTML = ' 件';
divKeNsu.appendChild(countSpan);
divKeNsu.appendChild(unitSpan);
kintone.app.record.getSpaceElement(field).appendChild(divKeNsu);
}
// ボタンを追加
const buttonDiv = document.createElement('div');
buttonDiv.style.marginTop = '10px';
const button = document.createElement('button');
button.innerHTML = '数量反映';
button.onclick = function() {
// 各フィールドに値をセット
const record = kintone.app.record.get();
record.record['第一工場の弁当1集計_'].value = counts['Okazu1keNsu'];
record.record['第一工場の弁当2集計_'].value = counts['Gohan1keNsu'];
record.record['第二工場の弁当1集計_'].value = counts['Okazu2keNsu'];
record.record['第二工場の弁当2集計_'].value = counts['Gohan2keNsu'];
kintone.app.record.set(record);
};
buttonDiv.appendChild(button);
kintone.app.record.getSpaceElement('botan').appendChild(buttonDiv);
} catch (err) {
console.error(err);
}
return event;
});
})();