我目前正在开发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());
}
答案 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没试过。