当前位置: 首页 > 知识库问答 >
问题:

根据日期发送提醒邮件

子车轶
2023-03-14

我正在使用下面的脚本从Google工作表发送电子邮件提醒,但我想修改它,以便它在每行的单元格F中指定的日期发送电子邮件。

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 999;   // Number of rows to process
  // Fetch the range of cells A2:B999
  var dataRange = sheet.getRange(startRow, 1, numRows, 999)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var subject = row[1];     // Second column
    var message = row[2];    // Third column
    var emailSent = row[3];     

    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates

      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

这就是我所拥有的,任何在其中添加日期的尝试都失败得很惨。

我在前面遇到了一个问题:谷歌应用程序脚本-根据手机中的日期发送电子邮件,但无法将其与我的脚本结合起来。

共有1个答案

司马项明
2023-03-14

Serge在前面的回答中提供的解决方案为您提供了一个非常灵活的脚本,能够使用日期/时间的任何部分作为发送的标准。

这里有一个更简单、更不灵活的方法。假设:

  • 电子表格中的日期是日期,而不是字符串

这里的神奇之处在于比较日期。JavaScript Date对象是从1970年开始的时间(世界时间)的数字表示。那么,比较日期的相等性是困难的。然而,由于上面的假设,我们只关心日期,这是有帮助的。为了解决时区问题并消除小时、分钟等的影响。,我们只需使用相同的Date方法从我们想要比较的日期对象生成日期字符串。toLocaleDateString()方法为我们调整时区。

结果脚本:

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails3() {
  var today = new Date().toLocaleDateString();  // Today's date, without time

  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 999;   // Number of rows to process
  // Fetch the range of cells A2:B999
  var dataRange = sheet.getRange(startRow, 1, numRows, 999)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var subject = row[1];     // Second column
    var message = row[2];    // Third column
    var emailSent = row[3];     
    var reminderDate = row[5].toLocaleDateString();  // date specified in cell F

    if (reminderDate != today)      // Skip this reminder if not for today
      continue;

    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates

      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}
 类似资料:
  • 我正在尝试创建一个脚本,为每个包含今天日期的单元格发送电子邮件。以下是我目前掌握的情况: 以下是我对脚本工作逻辑的设想: estimatedReturnDate最初获取F列中的第一个单元格,这是一个日期列表。 TodayDate获取单元格S1,其中包含今天的日期。 然后,for循环遍历工作表的所有行,并检查是否估计了返回日期=今天日期。如果是,将发送一封电子邮件,其中包含与今天日期匹配的行号。 然

  • 邮件提醒会使某些功能有更好的用户体验, 比如发送邮件提醒用户新消息到达. 请在seahub_settings.py中加入以下语句以开启邮件提醒功能 (同时需要对你的邮箱进行设置). EMAIL_USE_TLS = False EMAIL_HOST = 'smtp.domain.com' # smpt 服务器 EMAIL_HOST_USER = 'username@domain.com

  • 代码不应该在“参考”表中的“n”栏中的“电子邮件发送”栏中再次发送电子邮件。 如有任何帮助,我将不胜感激

  • 说明 用于门店实体卡交易后,向客户微信发送交易提醒消息 请求地址 http://api.dc78.cn/Api/mb_notify 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 id 微信卡id amt 交易金额/积分 cate 类型 类型(可选,默认为0),0=储值提醒,1=积分提醒 balance 储值余额/积分余额 cardno 实体卡号 实体卡号(仅用于显示) trid 交

  • 说明 此协议用于消费完成后发送消费完成/评价提醒消息,引导客人进入评价 需要将"提醒消息->消费完成/评价提醒"启用 请求地址 http://api.dc78.cn/Api/cash_complete 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 mbno 卡号 输入或扫码 id 会员卡id id和mbno两个可选其中之一 bzid 消费单编号 必须唯一,用于跟踪客人评价 返回 {

  • 此协议用于消费完成后发送消费完成/评价提醒消息,引导客人进入评价 需要将"提醒消息->评价提醒"启用 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 cash_complete string get GET参数组,本组参数需要参与签名 是 object └mbno 会员卡号(id和mbno两个可选其中之一)