async/awaitのイベントについてです。

こちらの処理を実装したいと思っています。

内容としては、別アプリと当アプリのappleidが一致している時、Gmailを取得してくる。

取得してきたGmailをGmailBOXに格納したいです。

 

2つ目のawaitのあたりでエラーとなって、赤線が出力されてしまっています。

awaitを外してみると、Uncaught (in promise) KintoneRestAPIError: [404] [GAIA_RE01] 指定したレコードが見つかりません。 と出力されてしまっています。

 

どのようにしたらよろしいでしょうか。

 

ご教授願います。

 

 

(function () {

    ‘use strict’;

 

    kintone.events.on([‘app.record.detail.show’, ‘app.record.create.submit’], async (e) => {

 

        const APP_ID = 5;

        const record = e.record;

        const APPLE = record.lbc_office_id.value;

        const query = ‘my_apple_id = "’ + APPLE + ‘"’

 

        // 一致する時、条件を指定する。

        const appleID = {

            ‘app’: APP_ID,

            ‘query’: query,

        };

        console.log(appleID);

 

        // レコード一括取得のために、recordsにする。

        await kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, appleID, (resp) => {

            console.log(resp);

            // 当アプリとAPP_IDの条件が一致する時、GmailAddressを取得して来る。

            let Gmail = resp.records[0][‘GmailAddress’].value

            window.alert(Gmail + ’ を取得しました’);

 

            const parameter = {

                app: kintone.app.getId(),

                id: Gmail,

                record: {

                    GmailBox: {

                        value: Gmail

                    }

                }

            }

 

            // 当アプリのフィールドをセットする。

            let GmailBOX = record[‘GmailBox’].value;

 

            const client = new KintoneRestAPIClient();

            console.log(parameter);

 

            if (!GmailBOX) {

                try {

                    await client.record.updateRecord(parameter);

                    window.alert(‘Gmailの取得・更新に成功しました。’);

                } catch (error) {

                    window.alert(‘Gmailの取得・更新に失敗しました。’);

                } finally {

                    return e;

                }

            } else {

                return e;

            }

        });

    });

})();

awaitがエラーになっているのは、async function内で使われていないからです。またAPI処理をasync/awaitで実行する場合は同期的に書いた方が良いでしょう。

        // レコード一括取得のために、recordsにする。
        await kintone.api(kintone.api.url('/k/v1/records', true), 'GET', appleID, (resp) => {

        // レコード一括取得のために、recordsにする。
      let get = await kintone.api(kintone.api.url('/k/v1/records', true), 'GET', appleID);

console.log(get.records);

 

APIがエラーになっているのは

            const parameter = {
                app: kintone.app.getId(),
                id: Gmail,

この部分(リクエストボディ)のidの指定に問題があるのではないかと思います。

idにはレコード番号を指定する必要があるので、Gmailという変数(APIで取得したレコードのGmailAddressというフィールドの値)は恐らく違うのではないかと思います。

リクエストボディについてはこちら を参考にして下さい。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。