2017-09-15 13 views
2

私はDomoのAPIからユーザーを引き抜くために取り組んでいます。私はすべてのユーザーを引っ込めようとしており、サイトの別名カスタムフィールドを追加しました。現時点では、1人のユーザーを引き込むだけです。また、obj2ログでは、1つのオブジェクトのみを返します。それはすべてのオブジェクトを返すわけではないので、部門であるID4は決して得られません。それは私たちが使用しているIDの一種であるID 11を出力して停止します。JSONは1つのオブジェクトしか返しません

私は近くにいるように感じる...私が修正する必要があるすべてのポインタ?

私はJavaScriptにとって非常に新しく、親切です!

if(metadata.report == 'User'){ 
DOMO.log('metadata.reportname: ' + metadata.report); 
var base_url = 'https://app.com/api/author/users/'; 
var res = httprequest.get(base_url); 
//DOMO.log('res: ' + res); 
var raw = JSON.parse(res); 
datagrid.addColumn('id', datagrid.DATA_TYPE_STRING); 
datagrid.addColumn('hris_id', datagrid.DATA_TYPE_STRING); 
datagrid.addColumn('full_name', datagrid.DATA_TYPE_STRING); 
datagrid.addColumn('first_name', datagrid.DATA_TYPE_STRING); 
datagrid.addColumn('last_name', datagrid.DATA_TYPE_STRING); 
datagrid.addColumn('department', datagrid.DATA_TYPE_STRING); 

var users = raw.users; 
//DOMO.log('users: ' + JSON.stringify(users)); 

for(var i = 0; i < users.length; i++){ 
    var obj = users[i]; 
} 
    //make new specific request with includes 
    var temp = obj.id; 
    var temp2 = '?includes[]=custom_fields'; 
    var uniq_url = base_url.concat(temp.concat(temp2)); 
    //DOMO.log(uniq_url); 
    var res2 = httprequest.get(uniq_url); 
    var raw2 = JSON.parse(res2); 
    //DOMO.log((raw2)); 

    var linked = raw2.linked; 
    var cf = linked.custom_fields; 
    var cfv = linked.custom_field_values; 

for(var g = 0; g < cfv.length; j++){ 
    var obj2 = cfv[g]; 
    DOMO.log(obj2.value); 
    } 
    if (obj2.custom_fields.id == 4){ 
    DOMO.log("Department is: " + obj2.value); 
    } 

    //if (obj2.links.custom_field.id == 5){ 
     //DOMO.log('Position is ' + obj2.value); 


    //DOMO.log('JSON ' + res); 
    //DOMO.log('id: ' + obj.id); 
    datagrid.addCell(obj.id); 
    //DOMO.log('hris_id: ' + obj.hris_id); 
    datagrid.addCell(obj.hris_id); 
    //DOMO.log('full_name: ' + obj.hris_id); 
    datagrid.addCell(obj.full_name);   
    //DOMO.log('first_name: ' + obj.first_name); 
    datagrid.addCell(obj.first_name); 
    //DOMO.log('last_name: ' + obj.last_name) 
    datagrid.addCell(obj.last_name); 
    //DOMO.log('value: ' + obj.value); 
    datagrid.addCell(obj.value); 
    datagrid.endRow(); 
} 

//Console Log; 
metadata.reportname: User 
https://app.com/api/author/users/976?includes[]=custom_fields 
{"id":"3785","value":"12870","links":{"custom_field":{"id":"11","type":"custom_fields"}}} 

答えて

1

問題は、forループを使用することです:

for(var i = 0; i < users.length; i++){ 
    var obj = users[i]; 
} 

あなたはすべてのユーザーを反復が、常に現在の[i]は、ユーザを取っています。

私はあなたがブラケットは全体のコード取り囲むことを意味推測している:あなたの追加入力した後、私は次のforループ内の別のミスを参照してください :

var users = raw.users; 
//DOMO.log('users: ' + JSON.stringify(users)); 
for (var i = 0; i < users.length; i++) { 
    var obj = users[i]; 

    //make new specific request with includes 
    var temp = obj.id; 
    var temp2 = '?includes[]=custom_fields'; 
    var uniq_url = base_url.concat(temp.concat(temp2)); 
    //DOMO.log(uniq_url); 
    var res2 = httprequest.get(uniq_url); 
    var raw2 = JSON.parse(res2); 
    //DOMO.log((raw2)); 

    var linked = raw2.linked; 
    var cf = linked.custom_fields; 
    var cfv = linked.custom_field_values; 

    for (var g = 0; g < cfv.length; j++) { 
    var obj2 = cfv[g]; 
    DOMO.log(obj2.value); 
    } 
    if (obj2.custom_fields.id == 4) { 
    DOMO.log("Department is: " + obj2.value); 
    } 
} 

編集:このよう

を - 同じ問題ですが、反復していますが、最終的に1つの値(最後の値)をとります.gを使用しているため、jが定義されていないため、間違いがあります。

固定コード:

if (metadata.report == 'User') { 
    DOMO.log('metadata.reportname: ' + metadata.report); 
    var base_url = 'https://app.com/api/author/users/'; 
    var res = httprequest.get(base_url); 
    //DOMO.log('res: ' + res); 
    var raw = JSON.parse(res); 
    datagrid.addColumn('id', datagrid.DATA_TYPE_STRING); 
    datagrid.addColumn('hris_id', datagrid.DATA_TYPE_STRING); 
    datagrid.addColumn('full_name', datagrid.DATA_TYPE_STRING); 
    datagrid.addColumn('first_name', datagrid.DATA_TYPE_STRING); 
    datagrid.addColumn('last_name', datagrid.DATA_TYPE_STRING); 
    datagrid.addColumn('department', datagrid.DATA_TYPE_STRING); 

    var users = raw.users; 
    //DOMO.log('users: ' + JSON.stringify(users)); 

    for (var i = 0; i < users.length; i++) { 
     var obj = users[i]; 
     //Move brackets to end 

     //make new specific request with includes 
     var temp = obj.id; 
     var temp2 = '?includes[]=custom_fields'; 
     var uniq_url = base_url.concat(temp.concat(temp2)); 
     //DOMO.log(uniq_url); 
     var res2 = httprequest.get(uniq_url); 
     var raw2 = JSON.parse(res2); 
     //DOMO.log((raw2)); 

     var linked = raw2.linked; 
     var cf = linked.custom_fields; 
     var cfv = linked.custom_field_values; 

     //for (var g = 0; g < cfv.length; j++) { --> g++ instead of j++ 
     for (var g = 0; g < cfv.length; g++) { 
     var obj2 = cfv[g]; 
     DOMO.log(obj2.value); 
     //Move bracket to after using obj2 
     //Added more conditions: 
     if (obj2.custom_fields.id == 4 || obj2.custom_fields.id==5 || obj2.someOtherProp=="Something") { 
      DOMO.log("Department is: " + obj2.value); 
      //DOMO.log('JSON ' + res); 
      //DOMO.log('id: ' + obj.id); 
      datagrid.addCell(obj.id); 
      //DOMO.log('hris_id: ' + obj.hris_id); 
      datagrid.addCell(obj.hris_id); 
      //DOMO.log('full_name: ' + obj.hris_id); 
      datagrid.addCell(obj.full_name); 
      //DOMO.log('first_name: ' + obj.first_name); 
      datagrid.addCell(obj.first_name); 
      //DOMO.log('last_name: ' + obj.last_name) 
      datagrid.addCell(obj.last_name); 
      //DOMO.log('value: ' + obj.value); 
      datagrid.addCell(obj.value); 
      datagrid.endRow(); 
     } 
     } 
     //if (obj2.links.custom_field.id == 5){ 
     //DOMO.log('Position is ' + obj2.value); 

     //Moved this code inside the if id==4. 

    } 
    } 
+0

興味深いと思いました。私はユーザーだけを引っ張ってテストして、それは完全に正常に動作します。私が// includeで新しい特定のリクエストを作成し始めたとき、コードは1人のユーザーを引き抜き始めました。 forループを変更する必要はありますか? – computerguyinhere

+0

私の編集@computerguyinhereを参照してください –

+0

私は元の記事の残りの部分を既にそこにあった最後の括弧で追加しました。 @Ziv – computerguyinhere

関連する問題