2017-10-23 2 views
0

Importieren hatte, fand ich nicht die range.copyValuesToRange() so hatte ich dieses geschrieben:eine Reihe

var rr = src.getRange(start_row, start_col, nrows, 1).getValues(); 
dst.getRange(start_row, start_col+1, nrows, 1).setValues(rr); 

Und ich habe ähnliche Sachen für größere Bereiche, so überarbeitet ich die oben dazu:

var rr = src.getRange(start_row, start_col, nrows, 1); 
rr.copyValuesToRange(dst, start_col+1, start_col+1, start_row, start_row+nrows); 

Ich mache einige grundlegende Protokollierung auf ein anderes Blatt, aber ich sehe nicht viel Ausführungsgeschwindigkeit Unterschied in ihnen. Die Dokumentation sagt, dass man Dinge in Batches machen soll, was ich mache, aber gibt es den zusätzlichen Aufwand, eine Konvertierung in die Arrays in beiden Richtungen durchzuführen?

Wenn im Bereich src viele leere Zellen vorhanden sind, wie wirken sich diese Ansätze auf die Zellzahl dst aus?

Antwort

2

Ich empfehle die Verwendung copyTo (mit der Option contentsOnly: true, um mit dem, was Sie gerade tun, übereinstimmen), da die Parameter dieser Methode konsistenter mit dem Rest von Apps Script sind. Aber das ist nur wegen der Ästhetik, nicht aus Leistungsgründen. Der Zugriff eines Skripts auf Tabellenkalkulationsdaten ist so langsam, dass jede zusätzliche Konvertierung, die durchgeführt werden muss, vernachlässigbar sein sollte.

Leere Zellen werden wie andere kopiert, der leere Zustand hat keine Auswirkungen auf die Verwendung der Methoden. Ein Grund mag ich copyTo ist nicht die Koordinaten des Ziels zu buchstabieren: wie die Dokumentation sagt, nur die obere linke Zelle des Zielbereichs ist relevant. Also, ich würde einen Einzeiler

src.getRange(start_row, start_col, nrows, 1).copyTo(dst.getRange(start_row, start_col), {contentsOnly: true}) 

Ohne {contentsOnly: true} schreibt die Wirkung entspricht normale Copy-Paste, auch über Formeln und Formatierung trägt. mit {contentsOnly: true} ist es gleichbedeutend mit Kopieren und Einfügen-Nur-Werte. Wenn im Ziel zusätzliche Zeilen oder Spalten benötigt werden, werden diese automatisch eingefügt.

+0

Eine Einschränkung, die ich fand, ist, dass die copyTo-Funktionen nur in der gleichen Arbeitsmappe funktionieren. Das heißt, das ist eine viel ästhetisch einfachere Methode. –