首页 文章

自动打开Google Apps脚本用户界面

提问于
浏览
1

我目前正在开发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

    简单的方法是使用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
       }
    }
    

    虽然没试过 .

相关问题