2016-10-12 1 views
-1

Ich habe eine Funktion, die Notizen von einem Blatt liest und sie in Zellen in einem anderen Blatt schreibt, wenn eine Änderung gemacht wird. Jedes Mal, wenn ich das mache, fügt es alle diese Schreibvorgänge dem Undo-Stapel hinzu. Dies bedeutet, dass die Funktion "Rückgängig machen" nicht mehr möglich ist, wenn der Benutzer Änderungen vornimmt und bearbeitet, da der Rückgängig-Stapel voll mit den vom Skript vorgenommenen Änderungen ist.Kann ich Vorgänge aus dem Rückgängig-Stapel in Google Apps Script ausschließen?

Gibt es eine Möglichkeit, die Schreibfunktionen des Skripts vom Rückgängig-Stack auszuschließen? Ich weiß, dass das vielleicht nicht möglich ist, aber wenn ich das nicht kann, muss ich einen stündlichen Lauf mit dem Timer machen, und das bedeutet, dass alles bis zu einer Stunde veraltet sein wird.

Cheers,

Mike

+0

Nicht sicher, was Sie versuchen zu tun. Ich kann keine Korrelation zwischen den Bearbeitungen, die sich im Rückgängig-Stapel befinden, und den Daten sehen, die veraltet sind, es sei denn, dass jemand aktiv alles rückgängig macht. – Vytautas

+0

Ich habe diese Frage abgelehnt, weil sie keine Forschungsarbeit zeigt. –

+0

Danke Ruben, aber ich habe es untersucht und konnte nirgendwo auf den Hilfeseiten oder Foren des Google Apps-Skripts eine Antwort finden - daher dieser Beitrag. Gibt es bessere Möglichkeiten für die Forschung? Sorry @Vytaustas - dieser letzte Satz war verwirrend. Momentan läuft meine Funktion in der OnEdit (e) -Methode, was bedeutet, dass sie jedes Mal ausgeführt wird, wenn eine Änderung an der Tabelle vorgenommen wird. Leider werden dadurch die am Blatt vorgenommenen Änderungen in den Rückgängig-Stapel verschoben, anstatt dass der Benutzer zuletzt im Stapel ist, wodurch der Benutzer seine letzte Aktion rückgängig machen könnte. Ich werde meinen Beitrag bearbeiten. – user1766513

Antwort

0

Leider ist der Betrieb des Skripts entspricht man sich etwas in eine Zelle zu schreiben. Der Edit-Stack wird auf der Sheet-Seite nachverfolgt und die Änderungen werden vom Benutzer vorgenommen, der das Script ausführt.

Ihre einzige Hoffnung wäre es, es als ein anderer Benutzer als derjenige, der die Tabelle geöffnet hat, auszuführen, aber das ist möglicherweise nicht möglich angesichts der Natur der onEdit() löst aus. Siehe den Auslöser documentation.

Der Grund, warum ich dies vorschlage, ist, dass die Blätter die einzelnen Bearbeitungen des Benutzers einzeln verfolgen. Aber auch das ist keine perfekte Lösung, als ob wir beide genau die gleiche Zelle bearbeiten würden. E.G wenn ich A in eine leere Zelle schreibe und Sie dann B in dieselbe Zelle schreiben, eine die ich rückgängig mache, wird es wieder eine leere Zelle sein.

+0

Danke für Ihre prägnante Analyse ... Ich befürchtete, dass dies der Fall sein könnte ... Ich muss vielleicht sehen, ob ich mein Skript verbessern kann, so dass es so etwas wie das Aktualisieren aller Zellen zur gleichen Zeit tut (vielleicht eine Gruppe einfügen) von Zellen auf einmal), was mir eine 2-Tap-Art der Auflösung auf dem Rückgängig-Knopf hinterlassen würde ... – user1766513

+0

Nicht nur um dieses Problem zu lindern, sollten Sie immer so viele Daten wie möglich ausgeben. Versuchen Sie immer '.setValues ​​()' anstelle von mehreren '.setValue()' -Zeilen hintereinander zu verwenden, indem Sie zuerst ein Array von Daten erstellen – Vytautas

Verwandte Themen