江田様
いつもお世話になります。
江田様の書かれた内容をいつも確認させて頂き、勉強させていただいております。
ありがとうございます。
お陰さまで非同期処理の問題は解消されました。
ただ、まだ問題がございます。
違うアプリからレコードをGETして、参照元のアプリのテーブルにそのデータを追加したいと考えています。
下記のコードを実行するとBad Requestが返ってきます。
お手数ですが、ご確認頂き、間違いをご指摘頂けますでしょうか?
よろしくお願い申し上げます。
//実行タイミングはレコード詳細画面を開いた時
kintone.events.on(“app.record.detail.show”, (event) => {
var appId = 100
var param1 = {
app: appId,
field: [‘コード’, ‘成績表’]
};
var records = [];
return kintoneUtility.rest.getAllRecordsByQuery(param1).then((allRecords) => {
return Promise.all(allRecords[‘records’].map((rec) => {
return tableValueFetch(rec[‘YLコード’].value, rec[‘成績表’].value);
}));
}).then((params) => {
params.forEach((param) => {
records.push(param, appId);
});
}).then(() => {
var param2 = {
app: appId,
records: records
}
return kintoneUtility.rest.putAllRecords(param2).then((resp) => {
console.log(JSON.stringify(resp, null, ’ '));
}).catch((error) => {
console.log(error.message);
});
});
}
});
//コードから成績表アプリの該当レコードを取得
function tableValueFetch(aCode, tableRecords) {
var refAppId = 459;
var params = {
app: refAppId,
query: ‘コード="’ + ylCode + ‘"’,
//レスポンスに含めるフィールド指定
fields: [“$id”, “対象年月”, “組織名”, “番号”, “顧客軒数”,
“本数1”, “本数2”, “合計金額”]
};
//引用元のアプリからレコードGET
return kintoneUtility.rest.getAllRecordsByQuery(params).then((resp) => {
//変数に「r」にレスポンスで返ってきたものを代入、
//レスポンスがなくなるまで繰り返す
for (var rec of resp[‘records’]) {
var tableRecord = {
value: {
“対象年月”: {
value: “<div><a href="/k/” + refAppId + “/show#record=”
+ rec[‘$id’].value + “">”
+ rec[‘対象年月’].value
+ “</a></div>”
},
“成績表_組織名”: {
value: rec[‘組織名’].value
},
“成績表_番号”: {
value: rec[‘地区番号’].value
},
“顧客軒数”: {
value: rec[‘顧客軒数’].value
},
“本数1”: {
value: rec[‘本数1’].value
},
"本数"2: {
value: rec[‘本数2’].value
},
“売上金額”: {
value: rec[‘合計金額’].value
}
}
};
tableRecords.push(tableRecord);
}
var record = {
‘成績表’: {
value: tableRecords
}
};
var key = {
field: ‘コード’,
value: aCode
};
var records = {
updateKey: key,
record: record
}
return records;
});
}