Google脚本 - 日期/电子表格/自动电子邮件

时间:2015-06-24 19:55:52

标签: google-apps-script google-sheets gmail

提前道歉 - 我不是程序员。只是想为我的生意拼凑一些东西。目前,我有一个引用电子表格的脚本,并向我的接待员发送一封自动发送的电子邮件。这个脚本提供了我喜欢的所有信息,但问题是它为每个条目发送一个单独的电子邮件。理想情况下,我想向我的接待员发送一封电子邮件,其中包含即将到来的一天所有约会的列表。

我遇到的问题包括:

  • 我需要将多封电子邮件整合到一封电子邮件中,其中包含第二天即将到来的约会列表。
  • 我不知道如何选择我需要的行,因为它们是日期值(DD / MM / YYYY)。所以我正在寻找一种方法来阅读日期,认识到它是在约会前一天,并将这些条目添加到一个列表中。

如果有人能帮助我,我将不胜感激!

这是我到目前为止所拥有的:

function receptionist() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 8)
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[2];
    var timeslot = sheet.getRange(i+2,7,1,1).getValues();
    var name = sheet.getRange(i+2,2,1,1).getValues();
    var date = Utilities.formatDate(new Date(sheet.getRange(i+2,6,1,1).getValue()),"EST", "E MMM dd, yyyy");
    var receptionist= name+" scheduled on "+date+" at "+timeslot;
    var subject = "Appt. List";
    var emailAddress = "receptionist@example.com";
    MailApp.sendEmail({emailAddress, subject, receptionist});

提前致谢!

1 个答案:

答案 0 :(得分:0)

我已经测试了这段代码,它可以运行:

function receptionist() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 8)
  var data = dataRange.getValues();
  var receptionist = "Today's Appointments \r\r";

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[2];
    var timeslot = sheet.getRange(i+2,7,1,1).getValue();
    var name = sheet.getRange(i+2,2,1,1).getValue();
    var dateData = sheet.getRange(i+2,6,1,1).getValue();

    var dayOfAppointment = dateData.getFullYear() + dateData.getMonth() + dateData.getDate();
    var todaysDate = new Date();
    var todaysDayNumber = todaysDate.getFullYear() + todaysDate.getMonth() + todaysDate.getDate();

    if (todaysDayNumber === dayOfAppointment) {
      var date = Utilities.formatDate(new Date(),"EST", "E MMM dd, yyyy");
      var thisAppointment = name+" scheduled on "+date+" at "+timeslot + "\r";

      receptionist+=thisAppointment;
    };
  };

  var subject = "Appt. List";
  var emailAddress = "receptionist@example.com";
  MailApp.sendEmail(emailAddress, subject, receptionist);
};

您确实需要for循环。我从.sendEmail()参数中删除了花括号。注意&#34; \ r&#34;将每行换行到新行的值。这一行:

receptionist+=thisAppointment;

在每次迭代时使receptionist变量更长一个约会行。我没有通过每行代码来确定代码是否最佳。您需要的基础知识就在那里。它可以工作&#34;原样&#34;。