複数のkintone.api呼び出しでCannot read properties of undefined (reading 'then')が発生する

第11回 kintone REST APIを利用したレコード更新(ルックアップ自動更新)(https://developer.cybozu.io/hc/ja/articles/204537310)の

var paramGet = {
    ‘app’: updateAppId,
    ‘query’: ‘lookup = ’ + event.record[‘レコード番号’].value
};
return kintone.api(kintone.api.url(’/k/v1/records’, true), ‘GET’, paramGet).then(function(resp) {
    // ルックアップの更新

}).then(function(resp2) {
    // 処理成功のメッセージを表示

}).catch(function(error) {
    // エラー表示をする

});

を参照して以下のJavaScriptを作成し、実行したところ

「Uncaught TypeError: Cannot read properties of undefined (reading ‘then’)」というエラーが発生しました。

これは何に対してUndefinedと言われているのでしょうか?

上記サイトのサンプルでは2つめのkintone.apiはPUTになっていましたが、2つ目のkintone.apiもGETにしているためでしょうか?

作成したJavaScriptは以下となります

(function () {
    “use strict”;
    var events = [‘app.record.create.show’];

    kintone.events.on(events, function(event) {
        var appID = kintone.app.getLookupTargetAppId(‘日報’);
        console.log(‘start date:’+event.record.startDate.value);
        var query = ‘checkDay >= “2022-01-01”’;
        var params = {
            app: appID,
            query:query
        };
        console.log(‘start’);
        return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params,function(resp) {
            console.log(‘1st kintone.api resp’);
            console.log(‘call 2nd kintone.api);
            var records = resp.records;
            return kintone.api(kintone.api.url(’/k/v1/records’, true), ‘GET’, params);
        }).then(function(resp2){
            console.log(‘2nd kintone.api resp’);
            return event;
        }).catch(function(error){
            console.log(‘3rd catch error’);
            return event;
        });
    });
})();

動作確認のため同じものをGETしています

        return kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, params,function(resp) {

ここですが、第4引数に関数(コールバック関数)を指定するとPromiseじゃなくなってしまうからですね。

多段Promiseされたい場合はここを参考にしてみてください↓

https://developer.cybozu.io/hc/ja/articles/360023047852-kintone%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BPromise%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%81%AE%E5%9F%BA%E6%9C%AC

ありがとうございます

1つめのkintone.api呼び出しも

return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', paramGet).then(function(resp) 

だったのですね。

気が付いていませんでした。

また、参照先URLもありがとうございました。

こちらも参考にさせていただきます

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