2016-12-21 7 views
0

Ich habe eine Google-Tabelle mit ungefähr 500 URLs und X-Pfaden ausgefüllt. Nachdem festgestellt wurde, dass ImportXML einige Nachteile hat (es werden ständig Ladefehler angezeigt, selbst wenn nur 10 oder mehr Funktionen ausgeführt werden). Ich suche nach einer anderen Möglichkeit, das Blatt zu bevölkern. Mein erster Versuch war ein iteratives Skript, das einfach eine ImportXML-Funktion in eine Arbeitszelle schrieb und dann den Wert für jede URL schrieb. Ich dachte, dass es einfach funktionieren würde, wenn nur ein ImportXML läuft, aber immer noch Ladefehler auftreten.Probleme mit ImportXML in Google Tabellen

Musterblatt: https://docs.google.com/spreadsheets/d/1QgW4LVkB_oraO9gdS5DsnNta3GVlqsH0_uC1QP0iE7w/edit?usp=sharing

(beachten Sie die Probenblatt arbeitet tatsächlich mit dem iterativen ImportXML Skript OK, noch einige Fehler zurückgibt, aber ich denke, es muss eine Grenze für historische ImportXML Funktionen werden nicht nur aktuellen, auf dem Blatt weil mein Hauptblatt hat echte Probleme mit nur ein paar jetzt) ​​

Gibt es ein einfaches Skript, das funktioniert? Ich habe versucht, Variationen mit URLFetch, XML.evaluate, XMLService, aber mit meinem begrenzten Wissen kann ich es nicht zum Laufen bringen.

Jede Anleitung sehr geschätzt. Danke!

Antwort

0

Hier ist eine Arbeitsmethode - die ich für Sie getestet:

diese Funktion hinzufügen, in über der Funktion, die Sie in Ihrem Apps-Skript haben.

function importprice(url) { 
    var found, html, content = ''; 
    var response = UrlFetchApp.fetch(url); 
    if (response) { 
    html = response.getContentText(); 
    if (html) content = html.match(/<span id="product_price" itemprop="price">(.*)<\/span>/gi)[0].match(/<span id="product_price" itemprop="price">(.*)<\/span>/i)[1]; 
    } 
    return content; 
} 

und dann ImportXML Funktion ersetzen, die wie folgt aussieht derzeit:

var cellFunction1 = '=IMPORTXML("' + sheet.getRange(row,4).getValue() + '?' + queryString + '","' + sheet.getRange(row,5).getValue() + '")'; 

mit diesem:

var cellFunction1 = importprice(sheet.getRange(row,4).getValue()); 
+0

Sie diese Funktion auch direkt in Zellen verwenden können. Ich bevorzuge das und benutze es so. – Blanknewkid

Verwandte Themen