javascript - 是否可以在没有活动电子表格的情况下每天使用时间驱动触发器运行函数?
问题描述
我有一个功能可以在调用时更新单元格并发送电子邮件。我想每天运行它而不必打开电子表格(getActiveSpreadsheet()
方法)。
所以我尝试使用服务器端方法来调用它openById()
。但是当电子表格未打开时,该功能不会触发。
有没有办法在电子表格关闭的情况下运行它?
这是代码:
function updateNote() {
var ss = SpreadsheetApp.openById("MySpreadsheetID");
//do things
};`
function createTimeDrivenTriggers() {
// Trigger fonction everyday at 10.35am
ScriptApp.newTrigger('updateNote')
.timeBased()
.atHour(10)
.nearMinute(35)
.everyDays(1)
.create();
};
解决方案
回答:
您可以创建一个每天运行的可安装触发器,而无需打开电子表格。
细节:
使用基于时间的可安装触发器,您可以让您的函数每天运行,尽管根据文档:
时间可能会稍微随机化——例如,如果您创建一个重复的上午 9 点触发器,Apps 脚本会选择上午 9 点到 10 点之间的时间,然后每天保持该时间一致,以便在触发器再次触发之前经过 24 小时.
如果这对您来说不是问题,那么您可以从应用程序脚本编辑器为您的项目执行此操作 - 按照Edit > Current project's triggers
将在新选项卡中打开项目触发器页面的路径。
在左下角,单击+ Add Trigger
按钮以调出Add Trigger
模式 - 使用以下属性:
- 选择要运行的函数:
updateNote()
- 选择应该运行的部署:
Head
- 选择事件源:
Time-driven
- 选择基于时间的触发器类型:
Day timer
- 选择一天中的时间:
10am to 11am
如果恰好在 10:35 运行对您很重要:
您可以按照与上述相同的步骤进行操作,但属性略有不同:
- 选择要运行的函数:
createTimeDrivenTriggers()
- 选择应该运行的部署:
Head
- 选择事件源:
Time-driven
- 选择基于时间的触发器类型:
Day timer
- 选择一天中的时间:
9am and 10am
这样,您将创建基于时间的触发器,使其每天在 10:35 运行,始终在触发器需要触发之前运行。
参考:
推荐阅读
- amazon-web-services - AWS,Lambda 上的静态 IP
- visual-studio - Visual Studio 2019 社区无法打开源文件“gtest/gtest.h
- ios - UITextField。尝试使键盘出现时的奇怪行为
- python-3.x - Likert 问题标题未显示在 Microsoft Forms 响应的电子表格中
- javascript - console.log() 未登录 Google Chrome 控制台
- scala - 在大量分区上处理 upsert 不够快
- docusignapi - 如何在一个请求中获取所有信封状态及其签名者状态?
- gt - gt 使用 tab_source_note 添加多部分页脚
- python - Python 将 Json 读入 DataFrame
- elasticsearch - Logstash 的不一致流式传输行为 - ELK