我目前正在开发一个谷歌应用程序脚本应用程序,我想添加一个UI与OnOpen-Function。但问题是,OnOpen-Function只能作为一个插件或绑定到电子表格或文档文件的脚本。
我的问题是我如何运行的应用程序脚本代码作为一个独立的应用程序的新添加的文件?
到目前为止,我尝试了基于时间的触发器,但应用程序脚本创建了太多的触发器。是否有更好的方法来触发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());
}
简单的方法是使用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
}
}
还没试过呢