更新処理について

いつもお世話になります。

【質問内容】

エラーはでてないのですが、更新処理がされずこまっています。

 

【したいこと】

アプリA アプリBがあります。

アプリBの一覧を開いた瞬間、アプリAのフィールドの3項目(アプリBにも持っているフィールドです)を同期する処理をねらっています。

 

1.最初に、アプリAのレコード数を検索(案件NOをキー)し、それをクエリにしてアプリBのレコードを配列で取得します。

2.アプリBの案件進捗などの3項目のフィールドの値を取得します。

3.アプリAのフィールド3項目のフィールドを更新します。

 

/*

開発環境

*/

    

 

(function () {

 

    ‘use strict’;

 

    const events = [

        ‘app.record.index.show’,

    ];

   

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

 

        var body = {

        ‘app’: 134,//アプリA

    };

 

    return new kintone.Promise(function(resolve, reject) {

 

        kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body).then(function (respofA) {

 

            let recordofAppAArray = [];

 

            for (var i = 0; i < respofA.records.length; i++) {

                const recordofA = respofA.records[i]    //アプリA

                recordofAppAArray.push(‘案件NO = "’ + recordofA[‘案件NO’].value + ‘"’);

            }

            const query = recordofAppAArray.join(’ or ')

 

    var bodyB = {

        ‘app’: 136,//アプリB

        ‘query’: query,

    }

        kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, bodyB, function (respofB) {

        

            console.log(respofB);

            let recordsForUpdate = [];

                

                    for (var i = 0; i < respofA.records.length; i++) {

    

                        const recordofB = respofB.records[i];  //アプリB

                        const recordofA = respofA.records[i]    //アプリA

        

                        recordofB[‘案件NO’]; //アプリB

                        recordofB[‘案件進捗’]; //アプリB

                        recordofB[‘案件区分’]; //アプリB

 

                    recordsForUpdate.push(

                    {

                        // ‘id’: recordofA.$id.value,  //アプリAのidを取得していく  

 

                        “updateKey”: {

                            “field”: “案件NO”,

                            ‘value’: recordofB[‘案件NO’].value//アプリB

                             },

 

                        ‘records’: {  //アプリAのrecordを取得していく

                            ‘案件進捗’: { //アプリA

                                ‘value’: recordofB[‘案件進捗’].value//アプリB

                            },

 

                            ‘案件区分’: { //アプリA

                                ‘value’: recordofB[‘案件区分’].value//アプリB

                            }

 

                        }

                    }

                )

            }

            

//-----

 

            let bodyBA = {

                ‘app’: 134,

                ‘records’: recordsForUpdate

            };

            

              

              kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, bodyBA, function(resp) {

                // success

                console.log(resp);

                // console.log(JSON.stringify(resp, null, ’ '));

      }, function (error) {

                // error

                      console.log(error.message);

                      });   //putのおわり

 

        }, function (error) {

        

            // error

        

                console.log(error);    

                return(event);

            });

 

        }); //getbodyBの終わり

    

 

        });//getbodyAの終わり 

    }); //kintone.eventのおわり

})();   //functionのおわり

 

ログにエラーはでていなく、putの処理は進んでいるようにも見えるのですが、いざアプリAのレコードを見ると更新されていないので、困っていまして。。。

お力をいただけるとうれしいです!!

こんにちは!

直接の解決策ではないのですが、

GET, PUT するパラメータを一度ベタ書きしてから実行されてみるのはいかがでしょうか!?

どこで駄目だったか分かりやすいかも知れませんっ!

コメントありがとうございます。

 

            kintone.api(

                kintone.api.url(‘/k/v1/record’, true),

                ‘PUT’,

                // bodyBA,

                {

                    ‘app’: 134,

                    “updateKey”: {

                        “field”: “案件NO”,

                        “value”: “2012-004”

                    },                    // ‘records’: recordsForUpdate

                    ‘record’: {

                        ‘案件進捗’: {

                          ‘value’: ‘手続中’

                        }

                    }

                },

                function (resp) {

                    // success

                    console.log(resp);

                    // console.log(JSON.stringify(resp, null, ’ '));

                }, function (error) {

                    // error

                    console.log(error.message);

            });

 

このようなべた書きならとおりまして。。。

べた書きを一つ一つし直したら解決しました!!

 

                        ‘records’: {  //アプリAのrecordを取得していく

                            ‘案件進捗’: { //アプリA

                                ‘value’: recordofB[‘案件進捗’].value//アプリB

                            },

                            ‘案件区分’: { //アプリA

                                ‘value’: recordofB[‘案件区分’].value//アプリB

                            }

                        }

 

 

 ‘records’: {  //アプリAのrecordを取得していく

 ‘record’: {  //アプリAのrecordを取得していく

 

で「s」を抜かないと通らなかったらしいです。

ありがとうございます<m(__)m>

こんばんは!!

わ~!!!おめでとうございます:sparkles::sparkles:

そこだったんですね!!!

私もよくやる箇所でした!recordだったり、recordsだったりややこしいですよね(><):sweat_drops::sweat_drops:
解決されたみたいで良かったです~(*´∀`*)!!