他アプリへのサブテーブル追加について

お世話になります。

販売品管理アプリと在庫管理アプリがあり、販売品管理アプリのサブテーブルで利用数と行IDを入力しレコード保存時に、在庫管理アプリのサブテーブルに追加する処理を行いたいです。

※行IDは販売品管理アプリのサブテーブルと在庫管理アプリのサブテーブルで重複するものがあれば登録しないようにするためで、事前に一意の値が割り当てられています。

async awaitについて調べながらしており、一応上から順番に動くようにはなったのですが、サブテーブルの値が途中抜けてしまうなどと意図しない動きとなってしまいます。

画像のようにPromiseがPendingで返ってくるのが原因でしょうか。その場合どのように対応すればよろしいでしょうか。

 

 

■ソースコード

kintone.events.on(events5, async function(event) {

      const record = event.record;

      const year = record.年.value;

      const month = record.月.value;

      const sellItemTable = record.販売品.value

 

      for (var o = 0; o < sellItemTable.length; o++) {

        //const getsellItemName = sellItemTable[o].value[“販売品名”].value

        const getsellItemDays = sellItemTable[o].value[“販売品_日付”].value

        const getsellItemID = sellItemTable[o].value[“利用品ID_販売品”].value

        const getsellItemUse = sellItemTable[o].value[“販売品利用数”].value

        const getsellItemlineID = sellItemTable[o].value[“行ID_販売品”].value

 

      //在庫アプリの年・月・利用品IDが一致するレコードを探す

        const paramForGetStock1 = {

          ‘app’: stockAPP_ID,

          ‘query’: ‘年 in ("’ + year + ‘“) and 月 in (”’ + month + ‘") and 利用品ID = "’ + getsellItemID + ‘" limit 500’,

        }

 

        const resp = await kintone.api(kintone.api.url(‘/k/v1/records’,true), ‘GET’, paramForGetStock1);

          console.log(resp);

          if(!resp.records.length) return;

 

          //在庫管理アプリ出庫テーブル取得

          resp.records.forEach(function(record) {

          const syukkoTable = record[“出庫”].value;

          //在庫管理アプリ出庫テーブルのID(列)を取得

          let syukkoTable_ID = [];

          for (var m = 0; m < syukkoTable.length; m++) {

            syukkoTable_ID[m] = syukkoTable[m].value[“ID”].value;

          }

 

          let appended_subtable = [];

          let subtable = [];

          //在庫アプリの出庫テーブルの中に利用管理のサブテーブルと同じ行IDがあるか。無ければ追加。あれば追加しない。

            if (!syukkoTable_ID.includes(getsellItemlineID)) {

              for (let m = 0; m < syukkoTable.length; m++) {

                subtable.push(syukkoTable[m]);

              }

 

              subtable.push({

                value: {

                  “出庫日付”: {

                    “value”: getsellItemDays

                  },

                  “出庫数”: {

                    “value”: getsellItemUse

                  },

                  “ID”: {

                    “value”: getsellItemlineID

                  }

                }

              });

 

              const paramForPut1 = {

                “app”: stockAPP_ID,

                “id”: resp.records[0].$id.value,

                “record”: {

                  “出庫日付”: {

                    “value”: getsellItemDays

                  },

                  “出庫数”: {

                    “value”: getsellItemUse

                  },

                  “ID”: {

                    “value”: getsellItemlineID

                  },

                  “出庫”: {

                    “value”: subtable

                  }

                }

              }

              console.log(paramForPut1);

 

              appended_subtable.push(paramForPut1);

              subtable = subtable.concat(appended_subtable); // 既存と追加分のサブテーブルを結合

              var put_record = {}; // レコード更新用オブジェクト

              put_record[“出庫”] = {

              value: subtable

              }

              const put_resp = kintone.api(kintone.api.url(“/k/v1/record.json”, true), “PUT”, paramForPut1);

                console.log(put_resp); //Promise {<pending>}で返ってくる

            }else {

            }

        })

      }

      window.alert(“在庫管理に反映しました。”);

    return event;

  });

daikonsanさん

こんにちは。

 

pendingになっているのは、awaitが付いていないからだと思います。

const put_resp = await kintone.api(kintone.api.url("/k/v1/record.json", true), "PUT", paramForPut1);