2016-03-07 2 views
0

Je travaille sur un script Google Apps qui est lié à une API REST et place les données dans une feuille Google."Les coordonnées ou les dimensions de la plage ne sont pas valides" - Google Apps Script et les données JSON

Je l'ai fait avec succès une fois, mais en accédant à des données différentes, j'obtiens le message d'erreur "Les coordonnées ou les dimensions de la gamme ne sont pas valides" lorsqu'elles fonctionnent parfaitement sur mon autre script. Toutes les données accédées sont JSON, donc je suis un peu confus et provient de la même source. Le code J'utilise est:

function stats() { 


var logIn = { 
    "Authorization" : "Basic " + Utilities.base64Encode("XXXX" + ':' + "XXXX") 
    }; 



    var url = "XXXXX"; 


    var params = { 
    "method":"GET", 
    "headers":logIn, }; 

var response = UrlFetchApp.fetch(url, params); 
     var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("XXXX");    

var dataAll = JSON.parse(response.getContentText()); // 
    var dataSet = dataAll; 


    var rows = [], 
     data; 


    for (i = 0; i < dataSet.length; i++) { 
    data = dataSet[i]; 
    rows.push([XXXX]); //your JSON entities here 
    } 

    dataRange = sheet.getRange(1, 1, rows.length, 1); 

    dataRange.setValues(rows); 

} 

Je morceaux combiné de code à travers le web et cela fonctionne sur mon autre script. L'erreur apparaît sur la ligne qui dit: "dataRange = sheet.getRange (1, 1, rows.length, 1);"

Je crois que le problème est avec les données auxquelles j'accède mais je ne sais pas comment modifier le script pour qu'il fonctionne.

Les données JSON qui fonctionne est montré comme:

{ 
id: XXX, 
group: XX, 
text: "XXXX?", 
creation_date: XXXX, 
created_by: "XXXXX", 
tags: [ 
"XXXX" 
] 
} 

Et les données qui sont à l'origine de l'erreur est présentée comme:

{ 
    2016-02-29: { 
    XXX: 0, 
    XXX: 0 
    }, 

J'ai eu à « XXXX » un grand nombre de l'information privée - excuses. Toute aide serait appréciée.

Répondre

0

La propriété de longueur de Javascript est pour les tableaux indexés et ne s'applique pas aux objets. dataSet.length renvoie undefined et la boucle ne s'exécute jamais.

Pour obtenir la longueur de l'objet, vous pouvez utiliser Object.keys(dataSet).length comme indiqué here.

+0

Merci. J'ai donné le coup et je l'ai substitué. Maintenant, il est en train de terminer le script, mais tout est retourné "indéfini" - des idées? – JGA

+0

Que pousses-tu dans 'rows.push ([XXXX])'? Est-ce que vous poussez l'ensemble de l'objet JSON stringfied ou une partie de celui-ci? c'est-à-dire e 'data.something'? –

+0

Je cherche à obtenir la quantité de 'Lire', si c'est possible mais les données (quelque chose ici) ne ramassent pas la chaîne. { 29/02/2016: { Lire: 5, non lu: 0 }, – JGA