何を実現したいのかを書きましょう
アプリの中に
関連レコードが3つあり
①「関連作業一覧」という関連レコード一覧フィールドの「作業原価」の集計値を’totalZentaiAmount’というスペースフィールドに表示
②「関連材料費」という関連レコード一覧フィールドの「材料費合計」の集計値を’totalZairyoAmount’というスペースフィールドに表示
③「関連外注費」という関連レコード一覧フィールドの「外注費」の集計値を’totalGaityuAmount’というスペースフィールドに表示
というようにしたい
カスタマイズビューで amCharts 5 を使って日本地図を表示してみよう! – cybozu developer network (zendesk.com)
ここに記載のコードを参考にして作成してみました
発生した問題やエラーメッセージを具体的に書きましょう
①と②を表示させるコードではうまく表示できるのですが、①と②と③を表示させるコードではうまく表示されないで困っています
実行したコードをコピー&ペーストしましょう
①と②を表示させるコード
(() => {
'use strict';
const events = [
'app.record.detail.show',
'app.record.edit.show'
];
kintone.events.on(events, (event) => {
const clientRecordId = event.record['CTRLNO_製造原価'].value;
const zairyoAppId = kintone.app.getRelatedRecordsTargetAppId('関連材料費');
const sagyouAppId = kintone.app.getRelatedRecordsTargetAppId('関連作業一覧');
const appUrl = kintone.api.url('/k/v1/records');
const fieldMapping = {
'関連材料費': 'totalZairyoAmount',
'関連作業一覧': 'totalZentaiAmount'
};
const promises = [];
for (const appName in fieldMapping) {
const query = `CTRLNO="${clientRecordId}"`;
const outputField = (appName === '関連作業一覧') ? '作業原価' : '材料費合計';
const params = {
'app': (appName === '関連材料費') ? zairyoAppId : sagyouAppId,
'query': query,
'fields': [outputField]
};
const elementId = fieldMapping[appName];
const promise = new Promise((resolve) => {
kintone.api(appUrl, 'GET', params, (resp) => {
let amount = 0;
if (resp.records && resp.records.length > 0) {
for (let i = 0; i < resp.records.length; i++) {
const fieldValue = resp.records[i][outputField].value;
amount += (fieldValue !== null && fieldValue !== undefined) ? parseFloat(fieldValue) : 0;
}
}
const divTotalAmount = document.createElement('div');
const formattedAmount = `¥${amount.toFixed(0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,')}-`;
divTotalAmount.style.fontWeight = 'bold';
divTotalAmount.style.textAlign = 'left';
divTotalAmount.style.verticalAlign = 'middle';
divTotalAmount.style.fontSize = 12;
divTotalAmount.innerHTML = formattedAmount;
kintone.app.record.getSpaceElement(elementId).appendChild(divTotalAmount);
resolve();
});
});
promises.push(promise);
}
Promise.all(promises);
return event;
});
})();
①と②と③を表示させるコード
(() => {
'use strict';
const events = [
'app.record.detail.show',
'app.record.edit.show'
];
kintone.events.on(events, (event) => {
const clientRecordId = event.record['CTRLNO_製造原価'].value;
const zairyoAppId = kintone.app.getRelatedRecordsTargetAppId('関連材料費');
const sagyouAppId = kintone.app.getRelatedRecordsTargetAppId('関連作業一覧');
const gaityuAppId = kintone.app.getRelatedRecordsTargetAppId('関連外注費'); // 追加
const appUrl = kintone.api.url('/k/v1/records');
const fieldMapping = {
'関連材料費': 'totalZairyoAmount',
'関連作業一覧': 'totalZentaiAmount',
'関連外注費': 'totalGaityuAmount' // 追加
};
const promises = [];
for (const appName in fieldMapping) {
const query = `CTRLNO="${clientRecordId}"`;
const outputField = (appName === '関連作業一覧') ? '作業原価' : (appName === '関連外注費') ? '外注費' : '材料費合計'; // 追加
const params = {
'app': (appName === '関連材料費') ? zairyoAppId : (appName === '関連外注費') ? gaityuAppId : sagyouAppId, // 追加
'query': query,
'fields': [outputField]
};
const elementId = fieldMapping[appName];
const promise = new Promise((resolve) => {
kintone.api(appUrl, 'GET', params, (resp) => {
let amount = 0;
if (resp.records && resp.records.length > 0) {
for (let i = 0; i < resp.records.length; i++) {
const fieldValue = resp.records[i][outputField].value;
amount += (fieldValue !== null && fieldValue !== undefined) ? parseFloat(fieldValue) : 0;
}
}
const divTotalAmount = document.createElement('div');
const formattedAmount = `¥${amount.toFixed(0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,')}-`;
divTotalAmount.style.fontWeight = 'bold';
divTotalAmount.style.textAlign = 'left';
divTotalAmount.style.verticalAlign = 'middle';
divTotalAmount.style.fontSize = 12;
divTotalAmount.innerHTML = formattedAmount;
kintone.app.record.getSpaceElement(elementId).appendChild(divTotalAmount);
resolve();
});
});
promises.push(promise);
}
Promise.all(promises);
return event;
});
})();
どなたか詳しい方アドバイスいただきたいと思います