2012-05-10 4 views
2

J'utilise ImportXML dans une feuille google docs pour obtenir des données de l'API sistrix. Cela fonctionne bien mais j'ai rencontré la limitation de 50 commandes ImportXML dans une feuille. J'ai donc utilisé un script qui écrit la commande ImportXML dans une formule de cellule (temporaire) et récupère la valeur résultante de la cellule et la copie dans la cellule de destination. Vous pouvez donc effectuer autant de requêtes ImportXML que vous le souhaitez, car elles n'apparaissent que dans une cellule temporaire de la feuille. Le problème ici est que la requête ImportXML SOMETIMES prend très longtemps ou retourne avec N/A.Google docs ImportXML appelé depuis le script

Est-il possible que mon script n'attend pas parfois que la requête ImportXML retourne et que le résultat soit corrompu? Je suis actuellement en train de faire de cette façon:

function GetFormulaData(formula, sheet, row, col) 
{ 

// write the formula (ImportXML(...)) to the specified cell 
sheet.getRange(row, col).setFormula(formula); 

// return the value of this cell resulting from the formula 
return sheet.getRange(row, col).getValue(); 
} 

Donc, ce ne peut évidemment fonctionner que si la formule (la requête ImportXML) est fait et a écrit la valeur de retour dans la cellule, donc je peux lire la suite. Est-ce que quelqu'un a de l'expérience ou des alternatives pour appeler ImportXML à partir d'un script?

Salue Michbeck

J'ai résolu ce maintenant d'une manière différente. Il est plus commun d'utiliser UrlFetchapp() dans les scripts google doc qu'ImportXML. Mais vous devez acquérir les données XML vous-même à partir de la réponse http. Ces questions peuvent être fermées.

Répondre

1

J'ai résolu ceci maintenant d'une manière différente. Il est plus commun d'utiliser UrlFetchapp() dans les scripts google doc qu'ImportXML. Mais vous devez acquérir les données XML vous-même à partir de la réponse http.

je le fais de cette façon maintenant:

var response = UrlFetchApp.fetch(apiString).getContentText(); 
var xmlContent = Xml.parse(response, true); 
var answer = xmlContent.response.answer; 

// get what you need from the XML answer 
if (answer != null) 
{ 
    var element = answer.getElement('foo'); 
    if (element != null) 
    { 
     var attrib = element.getAttribute('bar');  
     if (attrib != null) 
      value = attrib.getValue(); // the value you want 
    } 
} 
+0

@ Michbeckable.How pour obtenir le titre de résultat de recherche Google, la description et l'URL en utilisant UrlFetchApp()? Est-ce que ça marche mieux qu'importxml? Donne-t-il moins d'erreurs de # N/A? Je reçois # N/A souvent en utilisant importxml de google script et en cherchant une solution, vous m'aidez ici. Merci d'avance. – user1788736

+0

@ user1788736: Je ne sais pas comment cela fonctionne avec les résultats de recherche google, mais devrait être similaire à l'API Sistrix comme je l'ai fait. J'ai édité ma réponse ci-dessus pour montrer une partie du code que j'ai utilisé. – Michbeckable