2017-09-16 2 views
0

Ich muss den übergebenen Wert an die Funktion (sagen 20.35) zu jeder ausgewählten Zellen hinzufügen. Ich habe eine riesige Liste und die Funktion unten Timeout bis zu 6 Minuten ohne das Ergebnis zu ZellenHinzufügen von Wert zu einer Zelle zu dem ausgewählten Bereich von Zellen mit GAS

Wie bekomme ich einen Workaround, um die Zelle jedes Mal bald nach Abschluss der Berechnung nacheinander zu schreiben . Zum Beispiel, wenn es nach dem Vervollständigen von 10260 abläuft, dann werden bis 10259 die Zellenwerte mit 20.35 addiert, was ich durch Ändern der Farbe der Zelle bei 1 auf 10259 hervorheben kann. Diejenigen Zellen, deren ursprüngliche Farbe nicht hinzugefügt wird.

Antwort

1

Ihr Skript konvertiert Zahlen in Zeichenfolgen und zurück, was viel mehr Zeit erfordert als das Hinzufügen von 1 zu einer Zahl. Ich verstehe, dass Sie vermeiden wollen, dass Strings am Ende mit "1" verwechselt werden, und Sie wahrscheinlich nicht wollen, dass alle leeren Zellen "1" in ihnen bekommen. Beide erreicht werden durch den Typ eines Elements Überprüfung vor dem Hinzufügen, um es:

function testadd() { 
    var range = ... // whatever 
    var values = range.getValues(); 
    var newValues = values.map(function(row) { 
    return row.map(function(elem) { 
     return (typeof elem == "number" ? elem + 1 : elem); 
    }); 
    }); 
    range.setValues(newValues); 
} 

Sie nicht trennen „setValue“ für jede Zelle ausgeführt werden soll, das wäre eine echte Performance-Killer sein und werden Sie wahrscheinlich verlassen außerhalb der Ausführungszeitquote ziemlich bald.

+0

geschätzt, aber dies führt auch zu einem Timeout in meinem Fall, wie es ziemlich groß ist. Können Sie mir helfen, die berechneten Daten intermittierend hinzuzufügen und zu platzieren, anstatt sie am Ende zu platzieren? –

Verwandte Themen