2016-06-17 2 views
0

Ich habe eine Tabelle mit verschiedenen Blättern in Google Blatt, 3 Benutzer können jeweils ein Blatt bearbeiten (Schutz wird eingestellt, jeder Benutzer kann nur ein Blatt bearbeiten). Sie alle können eine Google-Skriptfunktion ausführen, die das, was sie bearbeitet haben, in ein Übersichtsblatt schreibt. Ich möchte nicht, dass irgendjemand das Übersichtsblatt bearbeiten kann, also habe ich mich als einziger verfügbarer Editor festgelegt. Also mein Problem ist die Autorisierung der 3 Benutzer, nur durch die Google-Skript-Funktion, in der Übersicht zu schreiben. Ich habe versucht, die folgende Funktion zu verwenden:Google Skript: Schutz einer Blatt durch Funktion, wenn Benutzer nicht berechtigt, dies zu tun

var ungeschützte = summarySheet.getRange ('G3: G10'); protection.setUnprotectedRanges ([ungeschützt]);

aber da die Benutzer das Übersichtsblatt nicht bearbeiten dürfen und die Funktion mit dem aktiven Benutzer ausgeführt wird, können sie sich nicht das Recht geben, einen Bereich im Zusammenfassungsblatt aufzuheben ... Tun Sie das wissen, wie man dieses Problem umgehen kann?

Vielen Dank!

Antwort

0

Ich sehe zwei Skript-basierte Auswahl, eine einfache und eine ziemlich hart, und ein Blatt-basierte Wahl, das ist am einfachsten:

Ganz einfach:
Sie die „zusammenfassen“ Skript, anstatt sie oder laufen, Sie setzen das Skript für die Zusammenfassung auf einen Trigger aus Ihrem Konto. Dann lässt du den Schutz eigentlich alleine. Sie könnten festlegen, dass das summarize-Skript bei open ausgeführt wird, wobei ein Fehler auftritt, wenn der Benutzer nicht die erforderliche Berechtigung zum Aufheben des Schutzes für das Summary Sheet und/oder zum Schreiben in das Summary Sheet hat.

Hard:
Wenn sie das Skript "summarize" ausführen, ruft sie ein veröffentlichtes Standalone-Skript auf, dem die Berechtigung erteilt wurde, die erforderlichen Schutzänderungen vorzunehmen. Ich bin ehrlich, ich wäre nicht in der Lage, dies zu programmieren, habe aber ähnliche Implementierungen gesehen/gehört.

Easiest:

Schließlich möchte ich sicherstellen, dass Sie haben als die Zusammenfassung selbst die notwendigen Formeln enthalten, die, Parsing, usw. Daten von den anderen Blättern zusammenfassen, ohne dass von Skripten für diesen Aspekt des Blattes. Das Blatt könnte benutzerdefinierte Funktionen nach Bedarf aufrufen, wenn das Parsing oder andere Zusammenfassungsfunktionen über die Funktionen integrierter Funktionen hinausgehen. Das Blatt kann vollständig geschützt bleiben und sich in Echtzeit aktualisieren, wenn Benutzer Daten eingeben (Benutzer müssen die Zusammenfassungserstellung nicht auslösen, es sei denn, die Einstellungen für die Kalkulationstabelle sind automatisch neu berechnet worden).

Edited hinzufügen: put in A1 der Zusammenfassung Blatt etwas wie:

=summarize() 

Und haben die benutzerdefinierte Funktion eine 2-dimensionale Anordnung der zusammengefassten Daten zurück.

+0

Die Blatt-basierte Lösung wird mein Problem nicht beantworten becase Ich brauche die Zusammenfassung Daten nicht in Echtzeit aktualisiert werden, aber nur wenn die Benutzer wollen. Ich wusste nicht, dass die Auslöser an den Besitzer gebunden waren, es wird den Job machen! Danke –

+0

Es wird schwierig, einen vordefinierten Trigger zu haben und "nur wenn die Benutzer wollen" ausführen. Sie könnten den Auslöser auf eine bearbeitbare Zelle eines Endbenutzers setzen (z. B. wenn ein Benutzer WAHR auf die Frage "Bereit zum Zusammenfassen?" An einer vordefinierten Stelle des Blattes anspricht, das er bearbeiten kann). Und dann muss das Skript den Wert in dieser Zelle nach dem Ausführen wieder in FALSE ändern. Definitiv elegantere Lösungen als dies jedoch! –

Verwandte Themen