新規投稿
フォローする

kintoneアプリについて

アプリで別アプリから集計した値を項目に入れたいのですがうまく値が反映できません。
以下のようにしているのですが、どのようにしたら改善できるでしょうか?
ご教授よろしくお願いいたします。

for( var i=0; i< rec.length; i++ ){
//入出庫アプリからデータ取得
var query = 'goodsCode = "' + rec[i]['goodsCode']['value'] + '"';
var appUrl = kintone.api.url('/k/guest/10/v1/records') + '?app=62&query=' + encodeURIComponent(query);
var xmlHttp;
xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", appUrl, false);
xmlHttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
xmlHttp.send(null);
var obj = JSON.parse(xmlHttp.responseText);
console.log(obj);

    var appRec = obj['records'];
    if( appRec.length > 0 ){
            for( var j=0; j < appRec.length; j++ ){
            var appInNum = appRec[j]['inNum']['value'];
            var appOutNum = appRec[j]['outNum']['value'];

    // 更新するデータの Object を作成します
    var objParam = {};
    objParam['app'] = kintone.app.getId();// アプリ番号
    objParam['id'] = rec[i]['レコード番号']['value'];// レコード番号
    objParam['records'] = {};
    objParam['records'][i] = {};
    objParam['records'][i]['inNum'] = {}; // 緯度    
    objParam['records'][i]['inNum']['value'] = appInNum; 
    objParam['records'][i]['outNum'] = {}; // 経度    
    objParam['records'][i]['outNum']['value'] = appOutNum;    

    // レコードを更新します
    kintone.api('/k/guest/10/v1/record', 'PUT', objParam, function(resp){
        // 成功時は画面をリロードします
        //location.reload(true);
    }, function(resp) {
        // エラー時はメッセージを表示して、処理を中断します
        alert('error->');
        return;
    });
    }
}

}

0

4件のコメント

Avatar
竹中

追記ですがリロードさせないと駄目なのかと思いlocation.reload(true)をいれたらループしてしまいました。そちらについてもどなたかご教授お願いいたします。

0
Avatar
竹中

度々すみません。
レコードの登録は無事できたのですが、一覧画面を開いた時にデータを集計しアプリの項目へ登録することはできたのですが読み込みなおさないと一覧画面で確認できません。なのでレコード更新成功した場合にlocation.reload(true)でリロードしたいのですがループしてしまいます。どのようにしたら読み直しを一度のみにできるでしょうか?
宜しくお願いいたします。

0
Avatar
斎藤 栄

竹中さん
ラジカルブリッジの斎藤です。

別の質問
https://cybozudev.zendesk.com/hc/communities/public/questions/201329264-kintone%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
の関連かと思われますが、そちらに書かせていただいたように、
「アプリBに入庫あるいは出庫のレコードが作成されたタイミングで、JavaScriptを使って同時にアプリAの現在在庫数も増減」
ではなく、
「アプリAを表示した時にアプリBから毎回入出庫情報を取得して現在在庫を更新」と、逆にやられているようですね。
恐らく前者の方が効率的かと思いますし、リロード問題も無いのではないかと思います。

で、上記のやり方で2回目のリロードを回避したいとのことですが(上記ソースの前提がよくわからないところもありますが)、更新する項目に変化が無ければ更新しないという処理を入れるのがまずは得策ではないでしょうか。

0
Avatar
竹中

斎藤様

ご回答ありがとうございます。
読み込むときに集計し表示するように考えていました。
教えていただいた「アプリBに入庫あるいは出庫のレコードが作成されたタイミングで、JavaScriptを使って同時にアプリAの現在在庫数も増減」というやり方でも一度作成してみようかと思います。
ありがとうございます。またわからなかったらご質問させていただきますのでその際は宜しくお願い致します。

0
サインインしてコメントを残してください。