Ich habe ein Google-Blatt, das mit Aktivitäten über ein Google-Formular ausgefüllt ist. Eines der Felder ist ein Aktivitätsdatumsfeld. Sobald dies erledigt ist, wird die Aktivität zu einem anderen Blatt für Berichtszwecke über Appendrow verschoben.Google apps scripts legen Zellenformeln fest, die eine Zeilennummer für eine Zeile benötigen, die über appendrow hinzugefügt wurde
var cells = [activityDate, title, completionDate, ...];
destsheet.appendRow (cells);
in der Population einer Pivot-Tabelle zu unterstützen, eine der Spalten in dem Ziel Tabelle ist der Monat der Tätigkeit für die Zwecke Gruppierung, die =Text(A1, "MMMM")
über die folgende Formel durchgeführt wird. Das Problem, das ich habe, ist, dass ich die Zeilennummer der Zeile, die dem Zielblatt hinzugefügt wurde, kennen muss, um die "Zeile" vollständig zu füllen. Angenommen, ich füge Zeile 89 an, dann kann ich die Formel für die Zeile auf = Text (A89, "MMMM") setzen. Das Problem, auf das ich stoße, ist, dass appendRow zwar atomar ist, aber das Arbeitsblatt zurückgibt, nicht die hinzugefügte Zeile.
Während ich die Zeile über getRange nach appendRow bekommen konnte, stelle ich mir vor, es ist möglich, dass ein anderer Benutzer eine Zeile zwischen den appendRow und den getRange Aufrufen einfügen könnte. Ich habe mein Problem gelöst, indem ich die Formel für die Spalte ändere: "= Text (Indirekt (Adresse (Zeile(), 1, 4)," MMMM ")". Dadurch erhält ich den ordnungsgemäß formatierten Monat für das Aktivitätsdatum für Berichtszwecke. Für die weniger Tabellenkalkulation ist die Formel, die ich für meine Lösung verwende, ein wenig verwirrend.
Gibt es eine Möglichkeit, die appendRow in einer atomaren Transaktion zu bekommen, so kann ich richtig Zellen in der Zeile konfigurieren, die "Zeile" Anzahl abhängig sein kann?
Verwenden [Lock-Service] (https://developers.google.com/apps-script/reference/lock/lock-service) – Cooper