Ich möchte mit Google Apps Script benutzerdefinierte Funktionen für eine Tabelle erstellen. Ich habe eine sehr einfache Funktion:Dienst zu oft aufgerufen (Google Apps Script)
function foo(){
return "bar";
};
Das Problem ist, dass ich diese Funktion in ein paar hundert Zellen brauche. Wenn ich die Funktion =foo()
in alle diese Zellen einfügen, funktioniert die Funktion in einigen Zellen, aber in den meisten bekomme ich diesen Fehler: "Dienst zu oft aufgerufen: Tabelle. Versuchen Sie Utilities.sleep(1000)
zwischen Anrufen."
Ich glaube, ich verstehe nicht, warum diese Funktion, einfach, wie es ist, einen Aufruf des Tabellenkalkulations-Dienstes angesehen wird. Ich ersuche nicht einmal irgendwelche Daten (außer für die Funktion selbst). Ist das das Problem? Und wenn ja, gibt es einen Workaround? Benutzerdefinierte Funktionen können Google Spreadsheets erheblich leistungsfähiger machen. Dieses Problem führt jedoch dazu, dass eine benutzerdefinierte Funktion in mehreren Zellen verwendet werden kann. Vorschläge?
(PS - Die Verwendung der Utilities.sleep()
Funktion wie von der Fehlermeldung vorgeschlagen, hilft überhaupt nicht, wenn alle Zellen ihre Funktionen gleichzeitig aufrufen; es verlangsamt nur die Rate, mit der einzelne Zellen die Funktion wiederholt aufrufen.)
Ich denke, Ich hätte mehr über mein endgültiges Ziel in meiner Frage erfahren sollen. Kurz gesagt, ich habe eine Funktion geschrieben, die eine "3D" Summe (eine Summe über die Blätter) macht.Während ich weiß, dass Sie dies mit den integrierten Funktionen tun können, ist das Problem, dass ich Blätter wöchentlich hinzufüge, was bedeutet, dass ich diese Funktionen wieder aufnehmen und aktualisieren muss, um die neuen Blätter aufzunehmen. Was ich wollte, war nur eine Funktion, die iterativ Werte von ALLEN Blättern abholte und ihre Summe zurückgab, ohne dass ich die Funktion jede Woche aktualisieren musste. – jrc03c
Und ich habe eine andere Frage: Warum ist ein SERVER für eine einfache Funktion wie die in meiner Frage notwendig? Warum können solche einfachen Dinge nicht clientseitig berechnet und dann in die Zellen hineingeschoben werden (oder zumindest wie ein HUD über der Tabelle angezeigt werden)? Ich bin mir bewusst, dass dieser Vorgang alle Arten von Berechtigungen und Sicherheitsfragen aufwirft. Aber haben Google Apps Scripts nicht bereits die Möglichkeit, vor dem Hantieren mit Benutzerdaten um Erlaubnis zu bitten? – jrc03c
Bitte geben Sie weitere Details zur Art dieser "3D" -Summe oder einen Beispielcode für weitere Unterstützung an. Der Code, den Sie im Google Apps-Skript schreiben, ist im Wesentlichen serverseitiger Code. Es ist nicht Teil der Tabelle. Ich wette, dass es sich wie ein Dienst verhält. Jedes Skript hat seine eigene kleine Datenbank, es hat CPU-Berechtigungen, Timeout-Beschränkungen usw. Es gibt viel mehr zu tun als nur "" = "bar" 'als Tabellenkalkulation zu verwenden. Egal, ich bin mir sicher, dass es einen Weg gibt Um eine Summe zu erreichen, ohne diese Einschränkungen zu erfüllen – fooby