google-apps-script - 发送每日电子邮件触发器
问题描述
我想每个工作日发送一封电子邮件。地址列表在其中一张表中指定。当使用事件特定触发器时,电子邮件会按应有的方式发送出去。但是,当我将其设置为时间驱动触发器时,它无法正确执行。我收到以下关于我创建的 numRows 变量的错误:请先选择一个活动工作表。(第 21 行,文件“sendEmails”)
// define how HTML object is being sent:
function convSheetAndEmail(rng, email, subj)
{
var HTML = SheetConverter.convertRange2html(rng);
MailApp.sendEmail(email, subj, '', {htmlBody : HTML});
}
// function 2:
function doGet()
{
var sh1 = SpreadsheetApp.getActive().getSheetByName('Dashboard')
var dataRange = sh1.getDataRange();
var sh2 = SpreadsheetApp.getActive().getSheetByName('control_panel')
var numRows = SpreadsheetApp.getActiveSpreadsheet('Sales/Ops Daily Report').getLastRow()-1;
var data = sh2.getRange(2,1,numRows,1).getValues()
// loop through the array with the mail addresses:
for (i in data) {
var row = data[i];
var emailAddress = row[0];
var subject = 'Sales/Ops Daily Report';
convSheetAndEmail(dataRange, emailAddress, subject);
}
}
// send email
function createTriggers() {
var days = [ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY,
ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY,
ScriptApp.WeekDay.FRIDAY];
for (var i=0; i<days.length; i++) {
ScriptApp.newTrigger(doGet())
.timeBased().onWeekDay(days[i])
.atHour(14).create();
}
}
解决方案
方法ScriptApp.newTrigger()
应该使用字符串类型的参数,即函数名。您已使用doGet()
call 作为参数。结果触发器没有正确安装。如果你打算触发这个函数,你应该写:ScriptApp.newTrigger("doGet")
等等。
推荐阅读
- scala - 如何在地图中查找重复值
- c# - Postgres:为什么不能从 CLI 中使用 EF Core 3 脚手架
- python - 当我在 python 中舍入 x 时,它返回 0.0
- multithreading - 在 Rust 的 sigint 上唤醒一个睡眠线程?
- excel - 如果从备份工作簿中删除,如何从工作簿中恢复已删除的 TAB 表
- ibm-infosphere - 我们如何以 MUMPS 格式存储数据?
- attributes - 如何通过 Web 服务在服务订单上创建属性
- mysql - 如何在MYSQL中选择两种组合情况的结果?
- java - 从 ArrayList 检索数据时出现逻辑错误
- node.js - 如何通过换行符在 Node.js 中拆分缓冲区