配送依頼アプリの一覧画面の取得用ボタン押下で
他アプリ(受注アプリ)のサブテーブルのデータを取得して既存レコードのサブテーブルに追加したいです。
削除ボタンの処理内で集配コースマスタアプリのデータから新規作成したレコードの集配コースと受注アプリの集配コースが一致したサブテーブルデータを配送依頼アプリに追加するという処理を実現させたいです。
既存レコードのサブテーブルには一行もない状態です。
リクエストエラーも出ていないのですがテーブルにデータが追加されないです。
⇒出ていましたが見落としていました
(function () {
"use strict";
kintone.events.on("app.record.index.show", function (event) {
if (document.getElementById("my_index_button_01") !== null) {
return;
}
//レコード一覧画面に削除ボタンを設置
var myIndexButton = document.createElement("button");
myIndexButton.id = "my_index_button_01";
myIndexButton.innerText = "配送情報削除";
if (document.getElementById("my_index_button_02") !== null) {
return;
}
//レコード一覧画面に取得ボタンを設置
var myIndexButton2 = document.createElement("button");
myIndexButton2.id = "my_index_button_02";
myIndexButton2.innerText = "配送情報取得";
// 配送依頼削除ボタンクリック時の処理
myIndexButton.addEventListener("click", async (event) => {
alert("配送情報を削除します。");
//1.getAllRecordsをつかって対象のものを全件取得
const client = new KintoneRestAPIClient();
const appId = kintone.app.getId();
const res = await client.record.getAllRecords({ app: appId });
//2.1で取得したレコードからレコード番号だけとりだし配列化する
const targetRecords = res.map((r) => {
//idだけ抽出(mapは、ある配列から新しい配列を作る機能)
return {
id: r.$id.value,
};
});
//3.deleteAllRecordsを使って(2で抽出したIDをパラメータに渡し)、全件削除
const res_dell = await client.record.deleteAllRecords({
app: appId,
records: targetRecords,
});
//4.集配コースマスタからレコードを取得
const otherAppId = 38;
const otherAppRes = await client.record.getAllRecords({
app: otherAppId,
});
console.log(otherAppRes);
//5.4で取得したレコードを基に新しいレコードを作成
const newRecords = otherAppRes.map((record) => {
const 集配コースFieldValue = record.集配コース名.value;
return {
// 転記先のフィールド:他アプリから取得したフィールド
集配コース: { value: 集配コースFieldValue },
};
});
//6. addRecordsを使って新しいレコードを追加
const addRecordsRes = await client.record.addRecords({
app: appId,
records: newRecords,
});
//ページをリロード
location.reload();
alert("配送データを削除しました。");
});
// 配送依頼削除ボタンクリック時の処理
myIndexButton2.addEventListener("click", async (event) => {
alert("配送情報を取得します。");
//配送依頼アプリのレコード情報取得
const appId = kintone.app.getId(); //現在のアプリ(配送依頼)のID
const client = new KintoneRestAPIClient();
const 配送依頼アプリres = await client.record.getAllRecords({
app: appId,
});
//納品完了日が空のレコードかつ納品予定日が今日のレコードのみ受注管理アプリから取得
const targetAppId = 53;
const dateFieldCode = "納品完了日";
const date2FieldCode = "納品予定日";
const formattedToday = new Date().toISOString();
const query = `${dateFieldCode} = "" and ${date2FieldCode} = "${formattedToday}"`;
const 受注アプリres = await client.record.getRecords({
app: targetAppId,
query: query,
});
console.log(受注アプリres);
// フィールドコードの定義
const 配送コースフィールドコード = "集配コース"; // 配送コースのフィールドコードに置き換えてください
const 受注アプリサブテーブルフィールドコード = "テーブル"; // 受注アプリのサブテーブルフィールドコードに置き換えてください
const 配送依頼アプリサブテーブルフィールドコード = "配送情報"; // 配送依頼アプリのサブテーブルフィールドコードに置き換えてください
// ステップ1: 配送コースに基づいてレコードをマッチングし、複数のマッチングレコードの処理
配送依頼アプリres.forEach(async (配送依頼レコード) => {
const 配送コース = 配送依頼レコード[配送コースフィールドコード].value;
console.log(配送コース);
// マッチングする受注アプリのレコードをすべて見つける
const マッチング受注レコード群 = 受注アプリres.records.filter(
(受注レコード) =>
受注レコード[配送コースフィールドコード].value === 配送コース
);
console.log(マッチング受注レコード群);
// 複数のマッチングレコードのサブテーブルデータを集約
const 転記データ = [];
マッチング受注レコード群.forEach((マッチング受注レコード) => {
const サブテーブルデータ = マッチング受注レコード[
受注アプリサブテーブルフィールドコード
].value.map((サブテーブルレコード) => {
return {
value: {
// 受注アプリのサブテーブルから配送依頼アプリのサブテーブルへのフィールドマッピング
物品名: サブテーブルレコード.value["物品コード"].value,
物品コード: サブテーブルレコード.value["物品名"].value,
// ... 必要に応じて他のフィールドも追加
},
};
});
転記データ.push(...サブテーブルデータ); // 配列に追加
});
console.log(転記データ);
console.log(配送依頼レコード["$id"].value);
// ステップ2: 配送依頼アプリのサブテーブルにデータを追加
if (転記データ.length > 0) {
const addtable = await client.record.updateRecord({
app: appId,
id: 配送依頼レコード["$id"].value,
record: {
[配送依頼アプリサブテーブルフィールドコード]: 転記データ,
},
});
}
console.log(addtable);
});
alert("配送情報を取得しました。");
});
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);
kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton2);
});
})();