1

这是怎么回事!目前,我有一个工作代码,如果“提醒日期”是今天或之前,并且未选中“完成”复选框,则允许从谷歌表格发送电子邮件。

目前,我使用一个TEXTJOIN函数来合并用于发送和具有相同收件人的任务。当我运行我的代码时,它不会在项目符号中列出项目,而是在一行中列出。我不知道如何重写“消息”部分,以便它对这些 textjoin'ed 值添加项目符号。

这是当前代码:

function sendEmails() {
  var now = new Date().toLocaleDateString();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var startRow = 2;  
  var sheet = ss.getSheetByName ('Tasks')
  var numRows = sheet.getLastRow()-1;
  var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0]; 
    var message = row[2];       
    var ReminderDate = row[3].toLocaleDateString();
    var Status = row[5];
    var subject = "Task reminders";

    if (ReminderDate > now)
      continue;

    if (Status != true) {  
      var Email = {
        to: emailAddress,
        subject: "Task reminders  |  "+now,
        htmlBody:
        "Good day! This is to remind you of the following specific task/s:"+
        "<br />"+
        "<ul><li>"+message+"</li></ul>"+
        "<br /><br />"+
        "You can access the Task monitoring sheet by clicking <a href=" + ss.getUrl() + ">here</a>.",
        name: "Taks monitoring",
      };
      MailApp.sendEmail(Email);
      sheet.getRange(startRow + i, 5).setValue(now);
      SpreadsheetApp.flush();
      }
     }
    }

这是谷歌表:

在此处输入图像描述

这是我收到的内容:

在此处输入图像描述

但这是我真正想要的:

在此处输入图像描述

我尝试用谷歌搜索几个样本,但我不确定我是否做错了,为什么我似乎没有找到任何类似的案例。我希望我能在这里得到指导,但要了解和学习什么才能实现目标。我不确定,但我认为它与代码如何读取有关message,或者我可能TEXTJOIN不再应该 - 只需捕获要发送给同一个人的各个行,并通过代码将它们组合起来(也不知道该怎么做,或者这是否可能)

4

2 回答 2

3

此解决方案假定列表项之间存在单元格内换行符。

在这一行之后:

var message = row[2];       

添加这一行

  message = message.replace(/\n/g, "</li><li>");

它将用 HTML 标记替换换行符。

于 2019-08-02T08:46:17.933 回答
1
  • 在您的情况下,电子表格中单元格中的换行符不会反映到电子邮件中。
  • 您希望将换行符反映到电子邮件中。

如果我的理解是正确的,这个答案怎么样?在您的情况下,message用作 HTML 数据。那么如何修改如下?请认为这只是几个答案之一。

从:

var message = row[2];

至:

var message = row[2].split("\n").reduce(function(s, e) {return s += "<li>" + e + "</li>"}, "");

从:

"<ul><li>"+message+"</li></ul>"+

至:

"<ul>" + message + "</ul>" + 

参考:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

于 2019-08-02T08:43:20.927 回答