2016-06-28 103 views
1

我目前正在開發Google Apps腳本應用程序,並且想要使用OnOpen-Function添加UI。但問題是,OnOpen-Function只能作爲插件或作爲電子表格或文檔文件的綁定腳本工作。自動打開Goog​​le Apps腳本UI

我的問題是,如何將Apps腳本代碼作爲獨立應用程序運行以添加新文件?

到目前爲止,我嘗試過使用基於時間的觸發器,但應用程序腳本創建的觸發器太多。有沒有更好的方法來觸發新增文件的onOpen-Function?

這裏是我到目前爲止的代碼:

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

不要把它稱爲打開。即onTriggerOpen –

回答

0

簡單的方法是使用IF語句;

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

會成爲;

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

雖然沒有嘗試過。

+0

是的,它的工作,但仍然創造了一堆觸發器。有沒有辦法檢測到不必要的並刪除它們? 我該如何將限制從1分鐘降低到一個下限?或者直接在目錄中創建一個新文件時直接觸發OnOpen-Function? –

相關問題