jwi*_*eke 1 google-sheets google-apps-script
我有两个表格送入同一张纸中,并且每张纸都需要不同的触发器。尝试使用基于函数的触发器来触发,但这不起作用。
该函数的工作原理:
function testTrigger() {
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
Run Code Online (Sandbox Code Playgroud)
这个失败了:
function testTriggerTwo() {
var sheet = SpreadsheetApp.openById("...").getSheetByName("Responses");
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)
.onChange()
.create();
}
Run Code Online (Sandbox Code Playgroud)
和
“例外:参数 (SpreadsheetApp.Sheet) 与 ScriptApp.TriggerBuilder.forSpreadsheet 的方法签名不匹配。”
有任何想法吗?
function testTrigger() {
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)//this sheet is a class Spreadsheet
.create();
}
Run Code Online (Sandbox Code Playgroud)
这个失败了:
function testTriggerTwo() {
var sheet = SpreadsheetApp.openById("...").getSheetByName("Responses");
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(sheet)//this sheet is a class Sheet
.onChange()
.create();
}
Run Code Online (Sandbox Code Playgroud)
处理 Google Apps 脚本和 Google 的问题之一是,销售产品的人决定开始使用术语 Sheet 作为电子表格的同义词,但在 Apps 文档表中指的是类似 Excel 的工作表,我猜电子表格指的是到类似 excel 的工作簿。一个是文件,另一个是选项卡。在该函数的第二个版本中,当您应该使用类电子表格时,您正在使用类表。
我建议使用类似的东西来创建触发器,以避免为任何给定函数创建多个触发器的可能性,这可能会产生难以调试的问题。
function testTrigger() {
const ss = SpreadsheetApp.getActive();
if (ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == "myFunction").length == 0) {
ScriptApp.newTrigger("myFunction")
.forSpreadsheet(ss)
.onChange()
.create();
}
}
Run Code Online (Sandbox Code Playgroud)
通过检查所有项目项目触发器都没有具有相同函数名称的处理程序,您可以确保同一函数没有两个触发器。
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |