2016-06-28 33 views
1

Ich entwickle gerade eine Google Apps Script-Anwendung und möchte mit der OnOpen-Funktion eine Benutzeroberfläche hinzufügen. Aber das Problem ist, dass die OnOpen-Funktion nur als Addon oder als gebundenes Skript in der Spreadsheet oder Doc-Datei funktioniert.Automatisch Google Apps Script UI öffnen

Meine Frage ist, wie kann ich den Apps Script Code als eigenständige Anwendung für neue hinzugefügte Dateien ausführen?

Ich habe es bisher mit zeitbasierten Trigger versucht, aber App-Skript erstellt zu viele Trigger. Gibt es eine bessere Möglichkeit, die onOpen-Funktion für neu hinzugefügte Dateien auszulösen?

Hier ist mein Code so weit:

function tim(){ 
    ScriptApp.newTrigger("createSpreadsheetEditTrigger") 
    .timeBased() 
    .everyMinutes(1) 
    .create(); 
} 


function createSpreadsheetEditTrigger() { 
    var files = DriveApp.getFoldersByName("Development Lab").next().getFoldersByName("AppsScriptProgramm").next().getFoldersByName("Excel").next().getFiles(); 

    while (files.hasNext()){ 
    file = files.next(); 
    ScriptApp.newTrigger('onOpen') 
     .forSpreadsheet(SpreadsheetApp.openById(file.getId())) 
     .onOpen() 
     .create(); 
    } 
} 

function onOpen() { 
    SpreadsheetApp.getUi() 
     .createMenu('Metadata') 
     .addItem('Open', 'openDialog') 
     .addToUi(); 
} 

function openDialog() { 
    var html = HtmlService.createHtmlOutputFromFile('Index') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
     .setWidth(900) 
     .setHeight(400); 
    SpreadsheetApp.getUi() 
    .showModalDialog(html, 'Metadaten zum Dokument: '+ SpreadsheetApp.getActive().getName()); 
} 
+0

nennen Sie es nicht onOpen. dh onTriggerOpen –

Antwort

0

einfache Weise IF-Anweisung verwendet;

function tim(){ 
    ScriptApp.newTrigger("createSpreadsheetEditTrigger") 
    .timeBased() 
    .everyMinutes(1) 
    .create(); 
} 

Wird werden;

function tim(){ 
var triger1 = ScriptApp.newTrigger('createSpreadsheetEditTrigger').timeBased().everyminute(1).create(); 
if (triger1 <2){triger1 
    } 
} 

Habe es noch nicht versucht.

+0

Ja, es funktioniert, aber immer noch eine Reihe von Triggern erstellen. Gibt es eine Möglichkeit, unnötige zu erkennen und zu löschen? Und wie kann ich den Grenzwert von 1 Minute auf eine untere Grenze verringern? Oder einfach die OnOpen-Funktion direkt auslösen, wenn im Verzeichnis eine neue Datei erstellt wird? –

Verwandte Themen