自动打开Goog​​le Apps脚本用户界面

时间:2016-06-28 13:05:35

标签: user-interface google-apps-script

我目前正在开发Google Apps脚本应用程序,我想添加一个带OnOpen-Function的UI。但问题是,OnOpen-Function仅作为Addon或作为电子表格或Doc-File的绑定脚本。

我的问题是如何将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());
}

1 个答案:

答案 0 :(得分: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
   }
}
但是,Haven没试过。