2016-04-07 2 views
0

Ich habe eine Tabelle, die ich für die Arbeit gemacht habe, die ich mehrere Kopien von machen und an Mitarbeiter verteilen muss. Meine "Master" -Tabelle hat eine Reihe von geschützten Spalten, zusammen mit einer Auto-Sort-Java-Script-Funktion. Aufgrund der Schutzfunktionen kann ich keine einfachen Trigger verwenden, da die Berechtigungsstufen des Benutzers das Java-Skript nicht funktionieren lassen.Gibt es eine Möglichkeit, Kopien einer Tabelle zu erstellen, die installierbare Trigger beibehalten?

Um dies zu umgehen, verwende ich installierbare Trigger, die dem JS erlauben, meine Berechtigung zu verwenden. Das Problem ist, jedes Mal, wenn ich eine Kopie mache, muss ich hineingehen und Auslöser einrichten, was ein großer Schmerz ist. Gibt es eine Möglichkeit, Kopien zu erstellen, die auch die installierbaren Auslöser enthalten?

Wenn nicht, gibt es eine andere Möglichkeit, Trigger einzurichten, die in dieser Situation funktionieren?

+0

Sie könnten ein Menü hinzufügen, die eine Funktion ausgeführt wird, die die Funktionen (oder leere Versionen von denen, die eine Authentifizierung erfordern) läuft einmal und auch nach oben setzt die Auslöser, die zumindest den Schmerz reduzieren würden, um es einzurichten. –

Antwort

1

Kopien enthalten keine Trigger, die Lösung besteht lediglich darin, eine "install" -Funktion zu erstellen, die die Trigger mit der Benutzerberechtigung erstellt und gleichzeitig eine Autorisierung anfordert. Benutzer, die die Kopie erhalten, müssen diese Funktion bei der ersten Verwendung ausführen, bitten Sie sie, dies mit einer Popup-Nachricht zu tun, die in einer "onOpen" -Funktion ausgeführt wird, bis die Installationsfunktion ausgeführt wurde.

unten ist ein Codebeispiel des gesamten Prozesses:

function onOpen() { 
    SpreadsheetApp.getUi() 
    .createMenu("Utilities") 
    .addItem("install", 'install') 
    .addToUi(); 
    if(keys.length==0){ // if no properties has been written 
    Browser.msgBox('Please run the installation procedure from the menu'); 
    } 
} 

var keys = PropertiesService.getScriptProperties().getKeys();// this is placed outside of the function to define keys as global 

function install(){ 
    ScriptApp.newTrigger('yourfunctionName').forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create(); 
    PropertiesService.getScriptProperties().setProperty('key', 'installed correctly'); 
} 

function yourfunctionName(e){ 
    Browser.msgBox(JSON.stringify(e)); 
}