いつもお世話になっております。
表題の件ですが一覧画面においてボタンを配置しボタン押下後に他アプリのデータをREST APIのGETメソッドで取りに行き、一覧画面のデータを更新する動作をjavascriptで実現しようとしています。
そこで一覧画面上のデータとGETで取得した他アプリのデータそれぞれ突き合わせたいのですが他アプリのデータを格納した変数をREST APIの外に出すと「undefined」となり突合せができない状況です。
コーディングの内容を記載すると以下のとおりとなります。
/* コーディング内容(ここから) */
(function() {
“use strict”;
kintone.events.on(‘app.record.index.show’, function(event) {
if (document.getElementById(‘Menu_Button’) !== null) {
return;
}
////////////ボタン定義////////////////
// メニュ右側の空白部分にボタンを設置
var MenuButton = document.createElement(‘button’);
//ボタンのID指定
MenuButton.id = ‘Menu_Button’;
//ボタン名表示
MenuButton.innerHTML = ‘ボタン名’;
//ボタンサイズ
MenuButton.style.width = ‘200px’;
//左側のスペース
MenuButton.style.marginLeft = ‘250px’;
//////ボタンをクリックしたときのアクション//////
MenuButton.onclick = function () {
/* javascriptが動くアプリの一覧画面よりデータを取得 */
var index_param
= {
“app” : appId
};
kintone.api(“/k/v1/records”, “GET”, index_param, function(event){
//処理は何も記載していません
}, function(err){
alert(“エラーが発生しました”);
}
)
var records_index = event[‘records’]; //取得結果を変数records_indexに格納
for(var row = 0; row < records.length; row++){ //一覧画面のレコード1件ずつに対して処理を行う
// 突合せを行いたい一覧画面のレコードのIDをrecord_Noに格納
var record_No = records[row][“$id”][“value”];
//他アプリからのデータの取得条件をqueryConditionで指定
var queryCondition = " 会員コード = " + record_No ;
var ref_param = {
“app” : ref_appId, // 他アプリのID
“query” : queryCondition , // 検索条件
};
/* 他アプリよりqueryConditionの条件でデータを取得 */
kintone.api(
kintone.api.url(“/k/v1/records”, true), “GET”, ref_param).then(function (past_resp){
var records_past_set = past_resp[‘records’];
console.log(JSON.stringify(records_past_set)); //kintone.apiの中のみ参照できている
}, function(err){
console.log(err);
}
)
//一覧画面の各データのサブテーブルをtableRecordsにセットする
tableRecords = records_index[row][‘サブテーブル名’][‘value’] ;
//ここで定義するとrecords_past_setがundefinedとなる
var records_past_set = past_resp[‘records’];
・・・以後、records_past_setの内容を加工して結果を変数tableRecordsにセット後にREST APIで更新(PUT)する・・・
} // end for (var row = 0; row < records.length; row++){
}; //onclickイベント終了
kintone.app.getHeaderMenuSpaceElement().appendChild(MenuButton);
})// end kintone.events.on(‘app.record.index.show’, function(event) {
})(); // end (function() {
/* コーディング内容(ここまで) */
実現したいこととしては、変数records_past_setに格納されたデータを加工し、結果を変数tableRecordsにセット後にREST APIで更新(PUT)したいのですが、records_past_setをkintone.apiのスコープ外に出すrecords_past_setの内容がundefinedとなります。
私見では変数records_past_setがスコープ外に出てしまうことによる影響ではと考えており、その場合、ネームスペースを使えば解決できるとのことまでは分かり、いろいろ試行錯誤してみましたが具体的にtableRecords、records_past_setを同時に参照するための手法が思いつきません。
大変恐縮ですが、アドバイスをいただけたら幸いです。
以上よろしくお願いいたします。