お世話なります。JavaScript初心者になります。
実現したいことは、発注アプリの一覧に表示された複数データ(サブテーブルあり)を、
仕入アプリへ新規登録したいです。よくある問題かとは思いますが、調べても正解にたどりつけず困っております。
参考(1) jsでのサブテーブルへのPOST方法
参考(2) 一覧で表示したレコードのキーを使用して一括で別のアプリに登録したい
配列についてよく理解できていなかったり、つぎはぎで色々とおかしい部分があると思います。
アドバイスいただけると幸いです。
エラーはありませんが、コンソール画面がこちらです。
(() => {
'use strict';
//レコード一覧画面表示後イベント
kintone.events.on('app.record.index.show', (event) => {
const records = event.records;
// ヘッダースペース要素の取得
const headerSpace = kintone.app.getHeaderMenuSpaceElement();
// ボタン要素の作成
const button = document.createElement("input");
button.value = "一括登録";
button.type = "button";
// ボタンがクリックされた時の処理
const submit = function(){
const recRecords = [];
const postRecords = [];
// 取得したレコード分ループ
records.forEach(function(eachRecord) {
let subTable = eachRecord.発注詳細.value;
// サブテーブル分ループ
subTable.forEach(function(eachRow) {
let tableA = eachRow.value.商品名.value;
let tableB = eachRow.value.数量.value;
let tableC = eachRow.value.単位.value;
let tableD = eachRow.value.単価.value;
let tableE = eachRow.value.摘要.value;
recRecords.push({
"商品名": { "value": tableA },
"数量": { "value": tableB },
"単位": { "value": tableC },
"単価": { "value": tableD },
"摘要": { "value": tableE },
});
})
postRecords["仕入先"] = eachRecord.発注先.value;
postRecords["仕入日"] = eachRecord.発注日.value;
postRecords["仕入No"] = "S-2022-0002";
postRecords["発注No"] = eachRecord.発注No.value;
postRecords["担当者"] = eachRecord.担当者.value;
postRecords["仕入詳細"] = recRecords;
postRecords["工番"] = eachRecord.工番.value;
postRecords["科目名"] = eachRecord.科目名.value;
});
const postParams = {
app: 73,
records: postRecords
};
console.log(postParams);
console.log(postRecords);
kintone.api(kintone.api.url('/k/v1/records.json', true), 'POST', postParams, (resp) => {
// success
console.log(resp);
}, (error) => {
// error
console.log(error);
});
};
// ボタンをヘッダースペースに追加
headerSpace.appendChild(button);
// ボタンのクリックイベントに処理を登録
button.onclick = submit;
});
})();