2017-01-03 2 views
0

Ich habe ein Datenblatt, das Informationen aus einem anderen Blatt im Laufe des Tages über ein Vlookup einliest. Das andere Blatt ist über einen importxml, der den ganzen Tag aktualisiert wird, mit einer Website verbunden.Schreiben eines Skripts zum Entfernen von Formeln in Google-Blättern

Sobald die Informationen erhalten wurden, muss ich die Formel entfernen und die Werte an Ort und Stelle lassen. I.e. Sobald die Zelle nicht mehr als # N/V gelesen wird, ersetzen Sie diese Datenzeile durch Werte. Meine Idee ist es dann, dies als einen Trigger zu setzen, um dann jede Stunde zu laufen, jede Zeile zu durchlaufen und alle Zeilen zu aktualisieren, die #Nicht mehr anzeigen.

Antwort

1

Sie können die Ausgabe einer Formel durch statische Werte ersetzen, indem Sie das folgende Skript ausführen. Der entscheidende Punkt ist, dass ein bestimmter Bereich copied to itself, but only as values ist.

function freezeValues() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); // or whatever name 
    var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1 
    range.copyTo(range, {contentsOnly: true}); 
} 

Das heißt, es wäre logischer, die Formel in Position zu halten, so dass es die Ausgabe, die Sie anmelden möchten produzieren weiter, und statt dessen Ausgang an anderer Stelle kopieren, zum Beispiel auf eine neue Zeile der Kalkulationstabelle. Beispiel:

function logValues() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); // or whatever name 
    var range = sheet.getRange("A1:Z1"); // assuming your data appears in A1-Z1 
    var values = range.getValues();   // get the data 
    sheet.appendRow(values[0]); // appends a row with these values to the bottom of sheet 
} 
+0

zaq. Das ist ein großartiger Start, also vielen Dank, aber ich muss noch einen Schritt weiter gehen. Ich habe ungefähr 100 Zeilen pro Tag. Die 'Ergebnisse' für diese Zeilen werden im Laufe des Tages aktualisiert, so dass um 9:00 Uhr die Zeilen 3,5,17,25 aktualisiert werden können, dann um 9:30 die Ergebnisse für die Zeilen 7, 35, 40, 92 hinzugefügt werden können und dann mehr und mehr den ganzen Tag über eine importxml. Im Grunde jedes Mal, wenn der Importxml das gesamte Blatt aktualisiert, berechnet er neu, was eine beträchtliche Menge an Zeit in Anspruch nimmt, und offensichtlich werden alle Ergebnisse während dieses Zeitraums 'zurückgesetzt', da der Importxml 'leer' ist und dann aktualisiert wird. – Stuart

+0

Daher ... der letzte Teil des 'Puzzle' ist ein einfaches vlookup auf dem fraglichen Blatt, das als # N/A zeigt, bis die Ergebnisse kommen. Ich möchte die Schleife jede Stunde ausführen und den Code im Wesentlichen durchführen wie oben, aber auf einer zeilenweisen Basis für alle Zeilen, die bereits ihr Ergebnis haben und daher nicht mehr als # N/A angezeigt werden. Hoffe das ist klar. Nochmals vielen Dank für Ihre Hilfe und wenn Sie etwas hinzufügen können, wäre es sehr geschätzt. Mit freundlichen Grüßen. – Stuart

Verwandte Themen