以下のコードを書いているのですが、行き詰ってしまっているので回答いただければ幸いです。
//確定テーブルの処理のところの同期処理からGETなどの非同期処理待たずに次の処理に進んでしまいます。//見込みテーブルも同じくです。
処理としては、先にfunction one();を動作させる際にfunction oneの中で再帰処理をしてループさせ次のfunction two()も同様に処理させ最後にページの再読み込みを行うですが、すべての処理が終わる前に再読み込みしてしまいます。
該当のところのrespを確認すると問い合わせされていない状態になっておりました。
かなり抽象的で申し訳ないのですが、お願いいたします。
var appUrl = kintone.api.url("/k/v1/records", true);
var rec_id = kintone.app.record.getId();
var query2 = 'rec_id="' + rec_id + '"';
var params3 = {
app: AppId,
query: query2,
fields: outputFields2,
};
return kintone.api(appUrl, "GET", params3).then((resp10) => {
let bunpai_t = resp10.records[0].bunpai_t;
let bunpai_t_0 = resp10.records[0].bunpai_t_0;
var anken_no_t = resp10.records[0].anken_no.value;
var anken_na_t = resp10.records[0].anken_na.value;
let body = {
app: 283,
records: [
]
}
var ij = 0;
var iq = 0;
return new kintone.Promise(resolve =\> {
one();
resolve();
}).then(() => {
return new kintone.Promise(resolve => {
two();
resolve();
});
}).then(() => {
return new kintone.Promise(resolve => {
three();
resolve();
});
});
//確定額テーブルの処理
function one() {
xj();
function xj() {
if (ij == bunpai_t.value.length) {
} else {
var rec = bunpai_t.value[ij].value;
var params4;
//計上日がnullだった場合なにもしない
if (rec.keijou_d_0.value != null) {
return new kintone.Promise(resolve => {
var seban = rec.seban.value
var mo = moment(new Date(rec.keijou_d_0.value))
var gesho = mo.startOf('month').format('YYYY-MM-DD');
var getumatu = mo.endOf('month').format('YYYY-MM-DD');
var query = 'seban ="' + seban + '" and kijun_d >= "' + gesho + '" and kijun_d <= "' + getumatu + '"';
params4 = {
app: 283,
query: query,
};
return kintone.api(appUrl, "GET", params4);
}).then((resp) => {
console.log(resp)
//確定額一覧の人の予算がない場合POSTする、ある場合はPUTする
if (resp.records.length != 0) {
var kaku_t = resp.records[0].kaku_t
var rec_id = resp.records[0].rec_id.value;
for (var im = 0; im < bunpai_t.value.length; im++) {
var table = bunpai_t.value[im].value
var busho_cd_t = table.busho_cd_t.value
var uriage_t = table.uriage_t.value;
var arari_t = table.arari_t.value;
var arari_p_t = table.arari_p_t.value;
var siire_t = table.siire_t.value;
var keijou_d_t = table.keijou_d_0.value;
var flug1 = 0;
for (var mm = 0; mm < kaku_t.value.length; mm++) {
if (kaku_t.value[mm].value.no_t.value == anken_no_t) {
var flug1 = 1;
break;
} else if (kaku_t.value[mm].value.no_t.value == '') {
var flug1 = 0;
var kaku_t = { value: [] }
break;
} else {
var flug1 = 0;
}
}
if (flug1 == 0) {
kaku_t.value.push(
{
value: {
no_t: {
value: anken_no_t,
},
anken_na_t: {
value: anken_na_t,
},
busho_cd_t: {
value: busho_cd_t,
},
uriage_t: {
value: uriage_t,
},
arari_t: {
value: arari_t,
},
arari_p_t: {
value: arari_p_t,
},
siire_t: {
value: siire_t,
},
keijou_d_t: {
value: keijou_d_t,
},
}
}
)
} else if (flug1 == 1) {
kaku_t.value[mm].value.uriage_t.value = uriage_t;
kaku_t.value[mm].value.arari_t.value = arari_t;
kaku_t.value[mm].value.arari_p_t.value = arari_p_t;
kaku_t.value[mm].value.siire_t.value = siire_t;
kaku_t.value[mm].value.keijou_d_t.value = keijou_d_t;
}
}
let body2 = {
app: 283,
id: rec_id,
record: {
kaku_t
}
}
body.records.push(body2);
console.log(body);
return kintone.api(kintone.api.url("/k/v1/record.json", true), "PUT", body2).then((resp20) => {
console.log(resp20)
ij = ij + 1;
xj();
})
} else {
if (rec.keijou_d_0.value != null) {
let seban = rec.seban.value
let mo = moment(new Date(rec.keijou_d_0.value))
let gesho = mo.startOf('month').format('YYYY-MM-DD');
var busho_cd_t = rec.busho_cd_t.value
var uriage_t = rec.uriage_t.value;
var arari_t = rec.arari_t.value;
var arari_p_t = rec.arari_p_t.value;
var siire_t = rec.siire_t.value;
var keijou_d_t = rec.keijou_d_0.value;
var hanbetu = gesho + '-' + seban
let body10 = {
app: 283,
record: {
kijun_d: {
value: gesho,
},
seban: {
value: seban,
},
hanbetu: {
value: hanbetu,
},
kaku_t: {
value: [
{
value: {
no_t: {
value: anken_no_t,
},
anken_na_t: {
value: anken_na_t,
},
busho_cd_t: {
value: busho_cd_t,
},
uriage_t: {
value: uriage_t,
},
arari_t: {
value: arari_t,
},
arari_p_t: {
value: arari_p_t,
},
siire_t: {
value: siire_t,
},
keijou_d_t: {
value: keijou_d_t,
},
}
}
]
}
}
}
return kintone.api(kintone.api.url("/k/v1/record.json", true), "POST", body10).then((resp101) => {
console.log(resp101);
ij = ij + 1;
xj();
})
, (error) => {
console.log(error);
}
}
}
});
}
}
}
}
//見込みテーブルの処理
function two() {
yj();
async function yj() {
if (iq == bunpai_t_0.value.length) {
} else {
let rec = bunpai_t_0.value[iq].value
var params6;
if (bunpai_t_0.value[iq].value.mikomi_d_0.value != null) {
return new kintone.Promise(resolve => {
let seban_0 = rec.seban_0.value
let mo = moment(new Date(rec.mikomi_d_0.value))
let gesho = mo.startOf('month').format('YYYY-MM-DD');
let getumatu = mo.endOf('month').format('YYYY-MM-DD');
let query3 = 'seban ="' + seban_0 + '" and kijun_d >= "' + gesho + '" and kijun_d <= "' + getumatu + '"';
params6 = {
app: 283,
query: query3,
};
return kintone.api(appUrl, "GET", params6);
}).then((resp3) => {
console.log(resp3)
//見込額一覧の人の予算がない場合POSTする、ある場合はPUTする
if (resp3.records.length != 0) {
var rec_id_0 = resp3.records[0].rec_id.value;
var miko_t = resp3.records[0].miko_t;
for (var it = 0; it < bunpai_t_0.value.length; it++) {
var table_0 = bunpai_t_0.value[it].value
var busho_cd_t_0 = table_0.busho_cd_t_0.value
var uriage_t_0 = table_0.uriage_t_0.value;
var arari_t_0 = table_0.arari_t_0.value;
var arari_p_t_0 = table_0.arari_p_t_0.value;
var siire_t_0 = table_0.siire_t_0.value;
var mikomi_d_t = table_0.mikomi_d_0.value;
var flug1 = 0;
for (var tt = 0; tt < miko_t.value.length; tt++) {
if (miko_t.value[tt].value.no_t_0.value == anken_no_t) {
var flug1 = 1;
break;
} else if (miko_t.value[tt].value.no_t_0.value == '') {
var flug1 = 0;
var miko_t = { value: [] }
break;
} else {
var flug1 = 0;
}
}
if (flug1 == 0) {
miko_t.value.push(
{
value: {
no_t_0: {
value: anken_no_t,
},
anken_na_t_0: {
value: anken_na_t,
},
busho_cd_t_0: {
value: busho_cd_t_0,
},
uriage_t_0: {
value: uriage_t_0,
},
arari_t_0: {
value: arari_t_0,
},
arari_p_t_0: {
value: arari_p_t_0,
},
siire_t_0: {
value: siire_t_0,
},
mikomi_d_t: {
value: mikomi_d_t,
},
}
}
)
} else if (flug1 == 1) {
miko_t.value[tt].value.uriage_t_0.value = uriage_t_0;
miko_t.value[tt].value.arari_t_0.value = arari_t_0;
miko_t.value[tt].value.arari_p_t_0.value = arari_p_t_0;
miko_t.value[tt].value.siire_t_0.value = siire_t_0;
miko_t.value[tt].value.mikomi_d_t.value = mikomi_d_t;
}
}
let body3 = {
app: 283,
id: rec_id_0,
record: {
miko_t
}
}
body.records.push(body3);
console.log(body);
return kintone.api(kintone.api.url("/k/v1/record.json", true), "PUT", body3).then((resp20) => {
console.log(resp20)
iq = iq + 1;
yj();
})
} else {
if (rec.mikomi_d_0.value != null) {
let seban_0 = rec.seban_0.value
let mo = moment(new Date(rec.mikomi_d_0.value))
let gesho_0 = mo.startOf('month').format('YYYY-MM-DD');
var busho_cd_t_0 = rec.busho_cd_t_0.value
var uriage_t_0 = rec.uriage_t_0.value;
var arari_t_0 = rec.arari_t_0.value;
var arari_p_t_0 = rec.arari_p_t_0.value;
var siire_t_0 = rec.siire_t_0.value;
var mikomi_d_t_0 = rec.mikomi_d_0.value;
var hanbetu_0 = gesho_0 + '-' + seban_0
let body20 = {
app: 283,
record: {
kijun_d: {
value: gesho_0,
},
seban: {
value: seban_0,
},
hanbetu: {
value: hanbetu_0,
},
miko_t: {
value: [
{
value: {
no_t_0: {
value: anken_no_t,
},
anken_na_t_0: {
value: anken_na_t,
},
busho_cd_t_0: {
value: busho_cd_t_0,
},
uriage_t_0: {
value: uriage_t_0,
},
arari_t_0: {
value: arari_t_0,
},
arari_p_t_0: {
value: arari_p_t_0,
},
siire_t_0: {
value: siire_t_0,
},
mikomi_d_t: {
value: mikomi_d_t_0,
},
}
}
]
}
}
}
return kintone.api(kintone.api.url("/k/v1/record.json", true), "POST", body20).then((resp201) => {
console.log(resp201);
iq = iq + 1;
yj();
})
, (error) => {
console.log(error);
}
}
}
})
}
}
}
}
function three() {
if (window.name !== "abc") {
location.reload();
window.name = "abc";
} else {
window.name = "";
}
return event;
}
});