如何为使用应用程序脚本创建的 google 传播 sheet 创建基于时间的触发器
How to create a time based trigger for a google spread sheet created with apps script
我想知道是否有一种方法可以创建基于时间的触发器,用于使用 google 应用程序 script.I googled 创建的 google 传播 sheet很多但没有 luck.what 我正在寻找的是,我创建了一个 google 传播 sheet 并采用了传播的 id sheet 像这样
var spreadSheet = SpreadsheetApp.create('Google Contacts');
var id = spreadSheet.getId();
PropertiesService.getScriptProperties().setProperty('ssId', id);
然后我试图为这种传播创建触发器 sheet 就像这样
ScriptApp.newTrigger("myTrigger").timeBased().everyMinutes(1).create();
myTrigger 就是这个
function myTrigger(e) {
var range = e.range;
range.setNote('Last modified: ' + new Date());
}
我想运行这个触发器,也就是说,这次基于我的传播sheet的触发器是用以前的method.And创建的,现在我找不到办法了。
我正在寻找的是,我想 运行 这次基于此 ID 的价差 sheet 触发
var id = PropertiesService.getScriptProperties().getProperty('ssId');
我能够使用代码 ScriptApp.newTrigger('myTrigger').forSpreadsheet(id).onEdit().create();
为此传播 sheet 创建此触发器,但这不是基于时间触发,而不是在编辑上述传播 sheet 时触发。
谢谢。
这里的问题是你的触发器函数 myTrigger 被编码为期待一个 onEdit 事件而不是一个基于时间的触发器事件,因此当你的基于时间的触发器调用它时脚本会崩溃。
您可能会在脚本编辑器的执行脚本中看到此失败的详细信息。
原因是参考了e.range
,OnEdit触发器e.range是编辑范围,但是基于时间的触发器e.range是未定义的。这是因为基于时间的触发器与任何给定的单元格范围无关。
由于您的目标似乎是设置一个说明上次修改给定范围的时间,我不认为您可以使用基于时间的触发器轻松实现最终目标,为什么不简单地使用 onEdit 触发器?
如果您想通过基于时间的触发器与电子表格进行交互,您需要打开电子表格并获取范围,然后执行操作。
function myTrigger(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("A1:B1");
range.setNote('...')
您可以在此处的表格中查看事件与时间驱动触发器的不同属性:https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
我想知道是否有一种方法可以创建基于时间的触发器,用于使用 google 应用程序 script.I googled 创建的 google 传播 sheet很多但没有 luck.what 我正在寻找的是,我创建了一个 google 传播 sheet 并采用了传播的 id sheet 像这样
var spreadSheet = SpreadsheetApp.create('Google Contacts');
var id = spreadSheet.getId();
PropertiesService.getScriptProperties().setProperty('ssId', id);
然后我试图为这种传播创建触发器 sheet 就像这样
ScriptApp.newTrigger("myTrigger").timeBased().everyMinutes(1).create();
myTrigger 就是这个
function myTrigger(e) {
var range = e.range;
range.setNote('Last modified: ' + new Date());
}
我想运行这个触发器,也就是说,这次基于我的传播sheet的触发器是用以前的method.And创建的,现在我找不到办法了。
我正在寻找的是,我想 运行 这次基于此 ID 的价差 sheet 触发
var id = PropertiesService.getScriptProperties().getProperty('ssId');
我能够使用代码 ScriptApp.newTrigger('myTrigger').forSpreadsheet(id).onEdit().create();
为此传播 sheet 创建此触发器,但这不是基于时间触发,而不是在编辑上述传播 sheet 时触发。
谢谢。
这里的问题是你的触发器函数 myTrigger 被编码为期待一个 onEdit 事件而不是一个基于时间的触发器事件,因此当你的基于时间的触发器调用它时脚本会崩溃。
您可能会在脚本编辑器的执行脚本中看到此失败的详细信息。
原因是参考了e.range
,OnEdit触发器e.range是编辑范围,但是基于时间的触发器e.range是未定义的。这是因为基于时间的触发器与任何给定的单元格范围无关。
由于您的目标似乎是设置一个说明上次修改给定范围的时间,我不认为您可以使用基于时间的触发器轻松实现最终目标,为什么不简单地使用 onEdit 触发器?
如果您想通过基于时间的触发器与电子表格进行交互,您需要打开电子表格并获取范围,然后执行操作。
function myTrigger(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange("A1:B1");
range.setNote('...')
您可以在此处的表格中查看事件与时间驱动触发器的不同属性:https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events