在自定义插件中为 google 应用脚本安装触发器
Install trigger for google app script in custom addon
我对插件还是很陌生,我在安装触发器和拥有 运行 的相关功能时遇到了问题。
下面是添加1个"on open"触发器和1个"on edit"触发器到sheet的函数。
function addTriggers() {
var sheet = SpreadsheetApp.getActiveSheet();
var triggers = ScriptApp.getUserTriggers(sheet);
if(triggers.length!=2)//
{
ScriptApp.newTrigger('sheetOpen')
.forSpreadsheet(sheet)
.onEdit()
.create();
ScriptApp.newTrigger('sheetEdited')
.forSpreadsheet(sheet)
.onOpen()
.create();
}
然后我尝试通过onInstall()
;
安装这个功能
function onInstall(e){
addSpreadsheetEditTrigger();
sheetOpen();
}
function sheetOpen()
{
//do something after the sheet is open;
}
function sheetEdited()
{
//do something when the sheet is edited by user;
}
当我测试这个插件时,没有安装触发器,因此 none 发生了。另请注意,我需要使用可安装的触发器,因为我需要访问外部文件。
谁能告诉我哪里做错了?
1。如何手动构建触发器
如果您想为价差构建触发器sheet,您需要在 forSpreadsheet()
中指定参数 价差sheet , 而不是 sheet!
所以:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
...
ScriptApp.newTrigger('sheetOpen')
.forSpreadsheet(spreadsheet)
.onOpen()
.create();
...
看来你对函数 'sheetOpen'
和 'sheetEdited'
的赋值是错误的
您应该仔细检查是否确实需要手动构建触发器。相反,您可以调用已经存在的 onOpen(e) 触发器(除非您需要可安装的触发器)。
样本:
function onInstall(e){
sheetOpen();
}
function onOpen(e){
sheetOpen();
}
function sheetOpen()
{
//do something after the sheet is open;
}
更新
现在,插件的限制将不允许您直接安装触发器。相反,您可以创建一个自定义菜单,让用户可以选择在选择相应选项时安装触发器。
样本:
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
ui.createMenu('MyAddOn Menu')
.addItem('Please click here to get started', 'addTriggers')
.addToUi();
}
function addTriggers() {
...
}
我对插件还是很陌生,我在安装触发器和拥有 运行 的相关功能时遇到了问题。
下面是添加1个"on open"触发器和1个"on edit"触发器到sheet的函数。
function addTriggers() {
var sheet = SpreadsheetApp.getActiveSheet();
var triggers = ScriptApp.getUserTriggers(sheet);
if(triggers.length!=2)//
{
ScriptApp.newTrigger('sheetOpen')
.forSpreadsheet(sheet)
.onEdit()
.create();
ScriptApp.newTrigger('sheetEdited')
.forSpreadsheet(sheet)
.onOpen()
.create();
}
然后我尝试通过onInstall()
;
function onInstall(e){
addSpreadsheetEditTrigger();
sheetOpen();
}
function sheetOpen()
{
//do something after the sheet is open;
}
function sheetEdited()
{
//do something when the sheet is edited by user;
}
当我测试这个插件时,没有安装触发器,因此 none 发生了。另请注意,我需要使用可安装的触发器,因为我需要访问外部文件。
谁能告诉我哪里做错了?
1。如何手动构建触发器
如果您想为价差构建触发器sheet,您需要在 forSpreadsheet()
中指定参数 价差sheet , 而不是 sheet!
所以:
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
...
ScriptApp.newTrigger('sheetOpen')
.forSpreadsheet(spreadsheet)
.onOpen()
.create();
...
看来你对函数
'sheetOpen'
和'sheetEdited'
的赋值是错误的您应该仔细检查是否确实需要手动构建触发器。相反,您可以调用已经存在的 onOpen(e) 触发器(除非您需要可安装的触发器)。
样本:
function onInstall(e){
sheetOpen();
}
function onOpen(e){
sheetOpen();
}
function sheetOpen()
{
//do something after the sheet is open;
}
更新
现在,插件的限制将不允许您直接安装触发器。相反,您可以创建一个自定义菜单,让用户可以选择在选择相应选项时安装触发器。
样本:
function onInstall(e) {
onOpen(e);
}
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
ui.createMenu('MyAddOn Menu')
.addItem('Please click here to get started', 'addTriggers')
.addToUi();
}
function addTriggers() {
...
}