# 別アプリへ入力、登録したレコードから計算後のフィールド値を取得したい

**URL:** <https://community.cybozu.dev/t/topic/5794>\
**Category:** kintone 開発相談\
**Created:** [2022 年 3 月 11 日午前 7:22 UTC](https://community.cybozu.dev/t/topic/5794 "2022-03-11T07:22:13Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 11 日午前 7:22 UTC](https://community.cybozu.dev/t/topic/5794/1 "2022-03-11T07:22:13Z")

</div>

**背景・実現したいこと**

アプリAへ入力した値をアプリBへ転記・計算させ登録したレコードから計算後のフィールド値を取得したいのですが、kintoneで実装可能でしょうか？

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 18 日午前 3:08 UTC](https://community.cybozu.dev/t/topic/5794/2 "2022-03-18T03:08:48Z")

</div>

G.Qさん

こんにちは。

&nbsp;

標準ではできないので、JavaScriptでカスタマイズするしかないと思います。

REST APIを使う必要があります。

APIの使い方や詳細は、当サイト上部にある「チュートリアル」または「APIドキュメント」も合わせてご覧ください。

&nbsp;

流れとしては

①：アプリAからアプリBに対してPOST（登録）

②：①のレスポンスを受けた後、アプリBに登録したレコードをGET（取得）

③：②でGETしたレコードのフィールド情報をアプリA（自レコード）に入力

&nbsp;

アプリAのレコード編集画面から①を実行するのであれば上記の流れになりますが

レコード登録後の詳細画面から①を実行するのであれば、③は自レコードへのPUT（更新）が必要です。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 22 日午前 8:22 UTC](https://community.cybozu.dev/t/topic/5794/3 "2022-03-22T08:22:48Z")

</div>

koichiさん

返信ありがとうございます。

上記通りまずはPOSTを試しているのですがうまくいきません。

初心者質問で申し訳ありません。ご教授よろしくお願いします。

```
(function() {
    "use strict";
    kintone.events.on('app.record.detail.show', function(event) { 
        // アプリIDの取得
        var appId = event.appId;
        // レコード番号の取得
        var recordId = event.recordId;
        // リクエストプロパティ(JSON)
    var spp1 = event.record['テーブル_0']['value'][0]['value']['単重1']['value']
    var spp2 = event.record['テーブル_0']['value'][0]['value']['単重2']['value']
        var params = {
          "app": 420, // ← 参照ログを格納するアプリのIDに書き換えてください
            "record": {
              "単重1": { "value": spp1 },
              "単重2": { "value": spp2}
            }
      };
        // kintone REST API リクエスト ～ レコードの登録（POST）
        kintone.api(
            kintone.api.url('/k/v1/record', true), // - pathOrUrl
            'POST', // - method
            params, // - params
            function(resp) { // - callback
                // (特に何もしない)
            },
            function(resp) { // - errback
                // (特に何もしない)
            }
        );
    });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 23 日午前 1:04 UTC](https://community.cybozu.dev/t/topic/5794/4 "2022-03-23T01:04:25Z")

</div>

G.Qさん

ご確認ありがとうございます。

&nbsp;

見た感じは問題ないように思うのですが、APIの処理後にconsole.logを入れて

ブラウザのデベロッパーツールで確認ください。

&nbsp;

デバッグ方法は以下にも合わせてご覧ください。

[https://developer.cybozu.io/hc/ja/articles/207613916](https://developer.cybozu.io/hc/ja/articles/207613916)

```
kintone.api(
kintone.api.url('/k/v1/record', true), // - pathOrUrl
'POST', // - method
params, // - params
function(resp) { // - callback
console.log(resp);
},
function(error) { // - errback
console.log(error)
}
);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 23 日午前 2:35 UTC](https://community.cybozu.dev/t/topic/5794/5 "2022-03-23T02:35:39Z")

</div>

koichiさん

返信ありがとうございます。

上記試しましたが、レコードの登録はできましたが、フィールドへの書き込みが

できていません。原因は何が考えられますか？

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 23 日午前 4:10 UTC](https://community.cybozu.dev/t/topic/5794/6 "2022-03-23T04:10:34Z")

</div>

G.Qさん

最初の投稿の画像を改めて拝見して、書き込み先のフィールドは自動計算フィールドでしょうか？

自動計算されるフィールドには、書き込みができません（自動計算結果で上書きされます）。

そのため、自動計算しない別のフィールドに書き込みし、それを自動計算フィールドで参照する必要あります。

&nbsp;

自動計算フィールドでなければ、また別のところに問題がありますが、まずは上記ご確認ください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 23 日午前 7:58 UTC](https://community.cybozu.dev/t/topic/5794/7 "2022-03-23T07:58:16Z")

</div>

koichiさん

自動計算フィールドだったので、上記通りに行えば書き込みできるようになりました。ありがとうございました。

```
(function() {
  "use strict";
  kintone.events.on('app.record.detail.show', function(event) { 
      // アプリIDの取得
      var appId = event.appId;
      // レコード番号の取得
      var record = event.record;
      console.log(event);
      //var yt = record['閲覧アプリID']['Value']
      // リクエストプロパティ(JSON)
      var params = {
          "app": 420, // ← 参照ログを格納するアプリのIDに書き換えてください
          "record": {
             "日付": { "value": event.record.日付 },
              "計量機No": { "value": event.record.計量機No },
              "連番": { "value": event.record.receipts.value[0].value.no.value },
              "担当者1": { "value": event.record.担当者1 },
              "担当者2": { "value": event.record.担当者2 },
              "サイズ名": { "value": event.record.receipts.value[0].value.サイズ名.value },
              "めっき種類": { "value": event.record.receipts.value[0].value.めっき種類.value },
              "単重1A": { "value": event.record.receipts.value[0].value.単重1.value },
              "単重2B": { "value": event.record.receipts.value[0].value.単重2.value },
              "個数1A": { "value": event.record.receipts.value[0].value.個数.value },
              "形態": { "value": event.record.receipts.value[0].value.形態.value },
              
          }
      };

      // kintone REST API リクエスト ～ レコードの登録（POST）
      kintone.api(
          kintone.api.url('/k/v1/record', true), // - pathOrUrl
          'POST', // - method
          params, // - params
          function(resp) { // - callback
              // (特に何もしない)
          },
          function(resp) { // - errback
              // (特に何もしない)
          }
      );
  });
})();

```

ただ項目を増やしたせいか下記のエラーが出るようになりました。

エラー解除するには、減らすしかないのでしょうか？

```
{"code":"CB_JH01","id":"YtybBDsr6ANumeyo6VdR","message":"認証に失敗しました。セッション認証には、「X-Requested-With」
ヘッダーが必要です。"}

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 23 日午前 10:10 UTC](https://community.cybozu.dev/t/topic/5794/8 "2022-03-23T10:10:21Z")

</div>

G.Qさん  
日付、計量機No、担当者の末尾にvalueがないことが原因かと思います。  
まずは、そちらを修正してみてください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 24 日午前 12:29 UTC](https://community.cybozu.dev/t/topic/5794/9 "2022-03-24T00:29:22Z")

</div>

koichiさん

初歩的なミスで申し訳ないです。

上記、修正で無事全て登録できるようになりました。

本当にありがとうございます。

ただ次にアプリBで計算させた値を取得して書き込みたいのですが

うまくいきません。書き方が根本的に間違えていますでしょうか？

```
(function() {
  "use strict";
  kintone.events.on('app.record.detail.show', function(event) { 
      // アプリIDの取得
      // レコード番号の取得
      console.log(event);
      // リクエストプロパティ(JSON)
      var params = {
          "app": 420,  
          "record": {
             "日付": { "value": event.record.日付.value },
              "計量機No": { "value": event.record.計量機No.value },
              "連番": { "value": event.record.receipts.value[0].value.no.value },
              "担当者1": { "value": event.record.担当者1.value },
              "担当者2": { "value": event.record.担当者2.value },
              "サイズ名": { "value": event.record.receipts.value[0].value.サイズ名.value },
              "めっき種類": { "value": event.record.receipts.value[0].value.めっき種類.value },
              "単重1A": { "value": event.record.receipts.value[0].value.単重1.value },
              "単重2B": { "value": event.record.receipts.value[0].value.単重2.value },
              "個数1A": { "value": event.record.receipts.value[0].value.個数.value },
              "形態": { "value": event.record.receipts.value[0].value.形態.value },
              
          }
      };

      var getvalue = {
        "app": 418,  
        "record": {
           "単重計算後": { "value": event.record.単重計算後.value },
            
        }
    };

      // kintone REST API リクエスト ～ レコードの登録（POST）
      kintone.api(
          kintone.api.url('/k/v1/record', true), // - pathOrUrl
          'POST', // - method
          params,
          getvalue, // - params
          function(resp) { // - callback
              // (特に何もしない)
          },
          function(resp) { // - errback
              // (特に何もしない)
          }
      );
    });
})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 24 日午前 7:29 UTC](https://community.cybozu.dev/t/topic/5794/10 "2022-03-24T07:29:01Z")

</div>

G.Qさん

1回のkintone.apiリクエストでは、全てを実装できないので

今回の場合は、3回に分けて実行する必要があります。

&nbsp;

①登録先アプリへの登録（POST）

②登録先アプリに登録したレコードの取得（GET）

③取得したレコード情報を自レコードに更新（PUT）

&nbsp;

大まかな流れで書くと以下のようなコードになります。

POSTが成功したらGET、GETが成功したらPUTという流れです。

```
(function() {

    'use strict';

    kintone.events.on('app.record.detail.show', function(event) {
        // アプリIDの取得
        // レコード番号の取得
        console.log(event);

        // POSTリクエストプロパティ(JSON)
        var params = {
            "app": 登録先アプリ番号,
            "record": {
              "フィールド1": { "value": "値" },
              "フィールド2": { "value": "値" },
              "フィールド3": { "value": "値" },
            }
        };

        // kintone REST API リクエスト ～ レコードの登録（POST）
        kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {
            // POST成功

            // GETリクエストプロパティ(JSON)
            var params = {
                "app": 登録先アプリ番号,
                "id": resp.id // POSTした結果のレコード番号
            };

            // kintone REST API リクエスト ～ レコードの取得（GET）
            kintone.api(kintone.api.url('/k/v1/record', true), 'GET', params, function(resp) {
                // GET成功

                // PUTリクエストプロパティ(JSON)
                var params = {
                    "app": 自アプリ番号,
                    "id": kintone.app.record.getId(), // 自レコード番号
                    "record": {
                       "フィールド1": { "value": resp.フィールド1.value },
                       "フィールド2": { "value": resp.フィールド2.value },
                       "フィールド3": { "value": resp.フィールド3.value },
                    }
                };

                // kintone REST API リクエスト ～ レコードの更新（PUT）
                kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
                    // PUT成功

                }, function(error) {
                    // PUTエラー
                });

            }, function(error) {
                // GETエラー
            });

        });

    }, function(error) {
        // POSTエラー
    });

})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 25 日午前 12:02 UTC](https://community.cybozu.dev/t/topic/5794/11 "2022-03-25T00:02:33Z")

</div>

koichiさん

返信ありがとうございます。

上記、試してみましたが、下記のエラーが出ました。

登録先から取得したいフィールドが、計算フィールドなので

取得できませんか？

```
(function() {
  "use strict";
  kintone.events.on('app.record.detail.show', function(event) { 
      // アプリIDの取得
      // レコード番号の取得
      console.log(event);
      // リクエストプロパティ(JSON)
      var params = {
          "app": 420,  
          "record": {
             "日付": { "value": event.record.日付.value },
              "計量機No": { "value": event.record.計量機No.value },
              "連番": { "value": event.record.receipts.value[0].value.no.value },
              "担当者1": { "value": event.record.担当者1.value },
              "担当者2": { "value": event.record.担当者2.value },
              "サイズ名": { "value": event.record.receipts.value[0].value.サイズ名.value },
              "めっき種類": { "value": event.record.receipts.value[0].value.めっき種類.value },
              "単重1A": { "value": event.record.receipts.value[0].value.単重1.value },
              "単重2B": { "value": event.record.receipts.value[0].value.単重2.value },
              "個数1A": { "value": event.record.receipts.value[0].value.個数.value },
              "形態": { "value": event.record.receipts.value[0].value.形態.value },
              
          }
      };

     
        // kintone REST API リクエスト ～ レコードの登録（POST）
        kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {
          // POST成功

          // GETリクエストプロパティ(JSON)
          var params = {
              "app": 420,
              "id": resp.id // POSTした結果のレコード番号
          };

          // kintone REST API リクエスト ～ レコードの取得（GET）
          kintone.api(kintone.api.url('/k/v1/record', true), 'GET', params, function(resp) {
              // GET成功

              // PUTリクエストプロパティ(JSON)
              var params = {
                  "app": 418,
                  "id": kintone.app.record.getId(), // 自レコード番号
                  "record": {
                      "receipts.value[0].value.単重計算後": { "value": resp.event.record.単重計算後.value },
                     // "フィールド2": { "value": resp.フィールド2.value },
                      //"フィールド3": { "value": resp.フィールド3.value },
                  }
              };
              // kintone REST API リクエスト ～ レコードの更新（PUT）
              kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
                  // PUT成功

              }, function(error) {
                  // PUTエラー
              });

          }, function(error) {
              // GETエラー
          });

      });

  }, function(error) {
      // POSTエラー
  });

})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 25 日午前 2:35 UTC](https://community.cybozu.dev/t/topic/5794/12 "2022-03-25T02:35:54Z")

</div>

G.Qさん

respの中はeventは無いので、「resp.record.フィールド名.value」という書き方で良いですよ。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 25 日午前 5:30 UTC](https://community.cybozu.dev/t/topic/5794/13 "2022-03-25T05:30:18Z")

</div>

koichiさん

上記直しました。まだ別に問題があるようで、元アプリに計算後の値を取得し書き込みができていません。

また編集画面から保存を押すと下記のエラーが発生するようになりました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 25 日午前 8:30 UTC](https://community.cybozu.dev/t/topic/5794/14 "2022-03-25T08:30:43Z")

</div>

G.Qさん

見落としていました。テーブルへのPUTですね。

テーブルへのPUTパラメータは、テーブル内の全行・全項目を記載しないといけません。

以下ご確認ください。

[レコード更新におけるテーブル操作のテクニック](https://developer.cybozu.io/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)

&nbsp;

また、そちらのエラーが出るということは、PUT処理自体は行われたということです。

「ほかのユーザーがレコードを更新しました」というのが、APIでPUTしたからです。

そのため、PUT処理が成功した後に、画面リロード処理を入れてみてください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 26 日午前 6:46 UTC](https://community.cybozu.dev/t/topic/5794/15 "2022-03-26T06:46:55Z")

</div>

上記、少々語弊がありました。  
リンク先にも記載されてますが  
更新するセル（フィールド）が決まっていれば、そのセル（フィールド）だけパラメータに渡せば良いです。

他の行は行IDだけ指定すれば良いです。

指定しなかったら行が削除されます。

必ずしも全項目を指定するということではなかったです。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 28 日午前 12:41 UTC](https://community.cybozu.dev/t/topic/5794/16 "2022-03-28T00:41:37Z")

</div>

koichiさん

返信ありがとうございます。

上記ですが、添付リンク先を見ながら修正してみましたが

自レコードへの書き込みもなく、編集画面に入ると更新が永久に起こってしまいます。

恐れ入りますが、またご教授いただけないでしょうか。

```
  // kintone REST API リクエスト ～ レコードの登録（POST）
        kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {
          // POST成功

          // GETリクエストプロパティ(JSON)
          var params = {
              "app": 420,
              "id": resp.id // POSTした結果のレコード番号
          };

          // kintone REST API リクエスト ～ レコードの取得（GET）
          kintone.api(kintone.api.url('/k/v1/record', true), 'GET', params, function(resp) {
              // GET成功

              // PUTリクエストプロパティ(JSON)
              var params = {
                  "app": 418,
                  "id": kintone.app.record.getId(), // 自レコード番号
                  "record": {
                      "receipts.value[0].value.単重計算後.value": { "value": resp.record.単重計算後.value },
                     // "フィールド2": { "value": resp.フィールド2.value },
                      //"フィールド3": { "value": resp.フィールド3.value },
                  }
              };
              // kintone REST API リクエスト ～ レコードの更新（PUT）
              kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
                   location.reload();
     
                  // PUT成功

              }, function(error) {
                  // PUTエラー
                  
              });

          }, function(error) {
              // GETエラー
          });

      });

  }, function(error) {
      // POSTエラー
  });

})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 28 日午前 3:09 UTC](https://community.cybozu.dev/t/topic/5794/17 "2022-03-28T03:09:01Z")

</div>

G.Qさん

更新対象のテーブルの全行を下記のように配列化しないといけません。

GETした情報を1行目に更新すると想定した書き方です。2行目以降は更新しません。

```
var putArray = [];
for (var i = 0; i < receipts.value.length; i++) {
  if (i == 0) {
    // 1行目にGETした値を更新（行idと更新したいフィールドのみ指定）
    putArray.push({
      "id": receipts.value[i].id,
      "value": {
        "単重計算後": {
          "value": resp.record.単重計算後.value
        }
     }
    });
  } else {
    // 2行目以降は更新しない（更新しない場合は行idのみ指定）
    putArray.push({
      "id": receipts.value[i].id,
    });
  }
}

// PUTリクエストプロパティ(JSON)
var params = {
  "app": 418,
  "id": kintone.app.record.getId(), // 自レコード番号
  "record": {
    "receipts": putArray
  }
};

```

&nbsp;

&nbsp;

画面リロードの件、こちらの処理は「app.record.detail.show」での実行でしたね。

無限ループしてしまいますので、一旦外してください。

&nbsp;

根本からの見直しが必要になりますが

処理的に問題なければ「app.record.create.submit」「app.record.edit.submit」で実行した方が良いですね。

但し、同期処理が必要になりますので、kintone.Promiseまたはawait/asyncを使って、保存処理を待機する必要があります。

[目指せ！JavaScriptカスタマイズ中級者（２） 〜Promiseのかわりにasync/await編〜](https://community.cybozu.dev/hc/ja/articles/900001244323-%E7%9B%AE%E6%8C%87%E3%81%9B-JavaScript%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E4%B8%AD%E7%B4%9A%E8%80%85-%EF%BC%92-Promise%E3%81%AE%E3%81%8B%E3%82%8F%E3%82%8A%E3%81%ABasync-await%E7%B7%A8-)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 28 日午前 5:13 UTC](https://community.cybozu.dev/t/topic/5794/18 "2022-03-28T05:13:32Z")

</div>

koichiさん

上記はこのような形になりますか？

添付写真のようにエラーが発生し、保存、更新ができません。

```
(function() {
  "use strict";
  kintone.events.on('app.record.create.submit', 
                    'app.record.edit.submit',
  async function(event) { 
      // アプリIDの取得
      // レコード番号の取得
      console.log(event);
      // リクエストプロパティ(JSON)
      var params = {
          "app": 420,  
          "record": {
             "日付": { "value": event.record.日付.value },
              "計量機No": { "value": event.record.計量機No.value },
              "連番": { "value": event.record.receipts.value[0].value.no.value },
              "担当者1": { "value": event.record.担当者1.value },
              "担当者2": { "value": event.record.担当者2.value },
              "サイズ名": { "value": event.record.receipts.value[0].value.サイズ名.value },
              "めっき種類": { "value": event.record.receipts.value[0].value.めっき種類.value },
              "単重1A": { "value": event.record.receipts.value[0].value.単重1.value },
              "単重2B": { "value": event.record.receipts.value[0].value.単重2.value },
              "個数1A": { "value": event.record.receipts.value[0].value.個数.value },
              "形態": { "value": event.record.receipts.value[0].value.形態.value },
              
          }
      };

     
        // kintone REST API リクエスト ～ レコードの登録（POST）
        kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {
          // POST成功

          var putArray = [];
          for (var i = 0; i < receipts.value.length; i++) {
            if (i == 0) {
              // 1行目にGETした値を更新（行idと更新したいフィールドのみ指定）
              putArray.push({
                "id": receipts.value[i].id,
                "value": {
                  "単重計算後": {
                    "value": resp.record.単重計算後.value
                  }
               }
              });
            } else {
              // 2行目以降は更新しない（更新しない場合は行idのみ指定）
              putArray.push({
                "id": receipts.value[i].id,
              });
            }
          }
          
          // PUTリクエストプロパティ(JSON)
          var params = {
            "app": 418,
            "id": kintone.app.record.getId(), // 自レコード番号
            "record": {
              "receipts": putArray
            }
          }; // kintone REST API リクエスト ～ レコードの更新（PUT）
              kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
                   location.reload();
     
                  // PUT成功

              }, function(error) {
                  // PUTエラー
                  
              });

          }, function(error) {
              // GETエラー
          });

    

  }, function(error) {
      // POSTエラー
  });

})();

```

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2229](https://avatars.discourse-cdn.com/v4/letter/l/ce7236/32.png) [@Legacy\_Account2229](https://community.cybozu.dev/u/Legacy_Account2229)\
**Post date:** [2022 年 3 月 28 日午前 7:25 UTC](https://community.cybozu.dev/t/topic/5794/19 "2022-03-28T07:25:23Z")

</div>

G.Qさん

&nbsp;

そちらのエラーは、edit.jsの258行目に「a」という変数が定義されていないというエラーですが

ひとまず以下を変更してみてください。

&nbsp;

async/awaitを使用する場合は、各kintone.apiの前に「await」を付けることで同期処理になります。

&nbsp;

「app.record.create.submit」「app.record.edit.submit」イベント内で処理する場合は、PUT処理は不要になります。

①POST

②GET

③テーブルの指定値を上書き

```
event.record.receipts.value[0].value.単重計算後.value = resp.record.単重計算後.value;

```

&nbsp;

修正内容が二転三転してすみません。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2879](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account2879](https://community.cybozu.dev/u/Legacy_Account2879)\
**Post date:** [2022 年 3 月 28 日午後 11:34 UTC](https://community.cybozu.dev/t/topic/5794/20 "2022-03-28T23:34:44Z")

</div>

koichiさん

上記直してみましたが、やはりうまくいきません。

POSTもできていないので、コードの書き方に誤りがあるのでしょうか。

こちらこそ、ながらくお付き合いいただき、ありがとうございます‼

```
(function() {
  "use strict";
  kintone.events.on('app.record.create.submit', 
                    'app.record.edit.submit',
   function(event) { 
      // アプリIDの取得
      // レコード番号の取得
      console.log(event);
      // リクエストプロパティ(JSON)
      var params = {
          "app": 420,  
          "record": {
             "日付": { "value": event.record.日付.value },
              "計量機No": { "value": event.record.計量機No.value },
              "連番": { "value": event.record.receipts.value[0].value.no.value },
              "担当者1": { "value": event.record.担当者1.value },
              "担当者2": { "value": event.record.担当者2.value },
              "サイズ名": { "value": event.record.receipts.value[0].value.サイズ名.value },
              "めっき種類": { "value": event.record.receipts.value[0].value.めっき種類.value },
              "単重1A": { "value": event.record.receipts.value[0].value.単重1.value },
              "単重2B": { "value": event.record.receipts.value[0].value.単重2.value },
              "個数1A": { "value": event.record.receipts.value[0].value.個数.value },
              "形態": { "value": event.record.receipts.value[0].value.形態.value },
              
          }
      };

        // kintone REST API リクエスト ～ レコードの登録（POST）
        await kintone.api(kintone.api.url('/k/v1/record', true), 'POST', params, function(resp) {
          // POST成功

          var putArray = [];
          for (var i = 0; i < receipts.value.length; i++) {
            if (i == 0) {
              // 1行目にGETした値を更新（行idと更新したいフィールドのみ指定）
              putArray.push({
                "id": receipts.value[i].id,
                "value": {
                  "単重計算後": {
                    "value": resp.record.単重計算後.value
                  }
               }
              });
            } else {
              // 2行目以降は更新しない（更新しない場合は行idのみ指定）
              putArray.push({
                "id": receipts.value[i].id,
              });
            }
          }
          

           // PUTリクエストプロパティ(JSON)
          var params = {
            "app": 418,
            "id": kintone.app.record.getId(), // 自レコード番号
            "record": {
              "receipts": putArray
            }
          };             
          
          event.record.receipts.value[0].value.単重計算後.value = resp.record.単重計算後.value;

/* // kintone REST API リクエスト ～ レコードの更新（PUT）
              kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', params, function(resp) {
                   location.reload();

              });
 *//* // PUT成功
              }, function(error) {
                  // PUTエラー
                  
              });
 */ 
          }, function(error) {
              // GETエラー
          });

  }, function(error) {
      // POSTエラー
  });

})();

```

[次のページ](https://community.cybozu.dev/t/topic/5794.md?page=2)
