google-apps-script - 我正在尝试每周一在 Google 表格/脚本中设置一个自动电子邮件列表
问题描述
我可以收到要发送的电子邮件,但是:
- 无法根据状态列过滤我们发送的电子邮件
- 无法将电子邮件格式化为整洁,如下所示:
亲爱的保罗让电子邮件脚本工作8 2019 年 5 月 25 日星期六 00:00:00 GMT+0100
(BST) 截止日期文档
- 我无法使用我位于 gmt 时区的正确时区发送电子邮件,它一直在发送 bst 时区。
- 我不知道如何让这个脚本每周一早上 8 点自动运行
我已经组合了几个代码片段,我已经编辑了我的工作表,以便轻松过滤定义 rowData
我的工作表示例:
Col A 下拉菜单选择代理(名称)
Col B 下拉菜单选择电子邮件地址
Col C 赋值 col = 纯文本
Col D 带有状态选项的下拉菜单(未开始、进行中、跳过或完成)
Col E 要添加到作业中的纯文本。想法是向代理商提供有关所需行动计划的更多详细信息
Col F 截止日期,仅格式化为日期(无时间戳)
Col G= Hyperlink( URL, "Deadline Doc") -> 试图添加 + 消息 4 + ' '; 用于电子邮件格式化目的的代码。
function sendEmailswithDetails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Email2"));
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange("A4:G11");
var data = dataRange.getValues();
for (i in data) {
var rowData = data[i];
var recipient = rowData[0];
var emailAddress = rowData[1];
var message1 = rowData[2];
var parameter1 = rowData[3]
var message2 = rowData[4];
var message3 = rowData[5];
var message4 = rowData[6]
var message = 'Dear ' + recipient + ' ' + message1 + ' ' + message2 + ' ' + message3 + ' ' + message4 + ' ';
var subject = 'Your deadlines this week';
// Check deadlines
if (Status = ("Not Started"), ("In Progress")){
// Fetch Status
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email2").getRange("B4:B11");
var emailAddress = emailRange.getValues();
MailApp.sendEmail(emailAddress, subject, message);
}
}
}
预期成绩:
- 仅在状态 = 进行中或未开始时发送电子邮件。
- 电子邮件发送组合消息列 1-4。
- 电子邮件被整齐地格式化成单独的行。
实际结果:
- 电子邮件发送到添加到 emailAddress 列的任何电子邮件
- 状态列不影响电子邮件是否发送
解决方案
尝试这个:
我假设状态是第 11 列,因为它是该范围内唯一未使用的列。
function sendEmailswithDetails() {
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName("Email2");
var dataRange=sheet.getRange("A4:G11");
var data=dataRange.getValues();
for (var i=0;i<data.length;i++) {
var rowData = data[i];
var recipient = rowData[0];
var emailAddress = rowData[1];
var message1 = rowData[2];
var parameter1 = rowData[3]
var message2 = rowData[4];
var message3 = rowData[5];
var message4 = rowData[6]
var message = 'Dear ' + recipient + ' ' + message1 + ' ' + message2 + ' ' + message3 + ' ' + message4 + ' ';
var subject = 'Your deadline is this week';
var Status=rowData[7];//I guessed because it's the only column left
if (Status=="Not Started" || Status=="In Progress"){
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(i+4,11).setValue('Sent');
}
}
}
推荐阅读
- php - PHP:MySQL数据库表中的更新在列中设置空白值
- windows - 为 Windows 10 实施 TTS 服务
- jqgrid - 在搜索对话框中添加新运算符
- java - 当我通过扫描下一行输入时如何打破while循环
- c# - WPF 显示对话框触摸问题
- java - 使用java连接mysql数据库失败
- swift - 如何访问 ARSCNDebugOptions.showBoundingBoxes?
- mysql - 如何使用字符串数组搜索 MySQL 数据库?
- tableview - 无法访问表视图单元格中 Struct 中的值。阅读下面截图中描述的代码
- excel - 修复 Access VBA 中的“变量未定义”,以使用“Application.Calculation=xlCalculationManual”关闭自动计算