首页 > 解决方案 > 我正在尝试每周一在 Google 表格/脚本中设置一个自动电子邮件列表

问题描述

我可以收到要发送的电子邮件,但是:

亲爱的保罗让电子邮件脚本工作8 2019 年 5 月 25 日星期六 00:00:00 GMT+0100
(BST) 截止日期文档

我已经组合了几个代码片段,我已经编辑了我的工作表,以便轻松过滤定义 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. 仅在状态 = 进行中或未开始时发送电子邮件。
  2. 电子邮件发送组合消息列 1-4。
  3. 电子邮件被整齐地格式化成单独的行。

实际结果:

  1. 电子邮件发送到添加到 emailAddress 列的任何电子邮件
  2. 状态列不影响电子邮件是否发送

标签: google-apps-scriptgoogle-sheets

解决方案


尝试这个:

我假设状态是第 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');

    }
  }
}

推荐阅读