Javascript 根据多个条件合并用于发送到电子邮件的行

Javascript 根据多个条件合并用于发送到电子邮件的行,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,怎么了!目前,我有一个工作代码,如果“提醒日期”是今天或之前,并且“完成”复选框未选中,则允许从google sheets发送电子邮件 目前,我使用TEXTJOIN函数来合并用于发送和与同一收件人共享的任务。当我运行代码时,它不会在项目符号中列出项目,而是在一行中列出。我不知道如何重写“message”部分,使其突出显示这些textjoin'ed值 以下是当前代码: function sendEmails() { var now = new Date().toLocaleDateString

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

目前,我使用
TEXTJOIN
函数来合并用于发送和与同一收件人共享的任务。当我运行代码时,它不会在项目符号中列出项目,而是在一行中列出。我不知道如何重写“message”部分,使其突出显示这些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();
      }
     }
    }
函数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(); 对于(变量i=0;i现在) 持续 如果(状态!=true){ var电子邮件={ 致:电邮地址:, 主题:“任务提醒|”+现在, HTML正文: “你好!这是为了提醒您以下特定任务:”+ “
”+ “
  • ”+消息+“
    • ”+ “

      ”+ “您可以通过单击访问任务监视表。”, 名称:“Taks监控”, }; MailApp.sendEmail(电子邮件); sheet.getRange(startRow+i,5).setValue(现在); SpreadsheetApp.flush(); } } } 这是谷歌表单:

      以下是我收到的信息:

      但我真正想要的是:

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

      • 在您的情况下,电子表格中单元格中的换行符不会反映到电子邮件中
      • 您希望在电子邮件中反映换行符
      如果我的理解是正确的,那么这个答案呢?在您的情况下,
      消息
      用作HTML数据。那么,按如下方式修改如何?请把这看作是几个答案中的一个

      发件人: 致:
      var message=row[2]。拆分(“\n”).reduce(函数(s,e){returns s+=”
    • “+e+”
    • “}”);

      发件人:
      • ”+消息+“
        • ”+
      致:
        ”+消息+“
      ”+
      参考资料:
      如果我误解了你的问题,而这不是你想要的结果,我道歉。

      • 在您的情况下,电子表格中单元格中的换行符不会反映到电子邮件中
      • 您希望在电子邮件中反映换行符
      如果我的理解是正确的,那么这个答案呢?在您的情况下,
      消息
      用作HTML数据。那么,按如下方式修改如何?请把这看作是几个答案中的一个

      发件人: 致:
      var message=row[2]。拆分(“\n”).reduce(函数(s,e){returns s+=”
    • “+e+”
    • “}”);

      发件人:
      • ”+消息+“
        • ”+
      致:
        ”+消息+“
      ”+
      参考资料:

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

      此解决方案假定列表项之间存在单元格内分隔符

      在这一行之后:

      var message = row[2];       
      
      添加这一行

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

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

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

      在这一行之后:

      var message = row[2];       
      
      添加这一行

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

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

      在这种情况下,向每个数组项添加
      标记不会创建3个单独的列表吗?@ross Yes。谢谢你的支持。我用的是旧版本。我刚刚更新过。您能确认一下吗?在这种情况下,向每个数组项添加
      标记不会创建3个单独的列表吗?@ross Yes。谢谢你的支持。我用的是旧版本。我刚刚更新过。你能确认一下吗?我认为你的方法更好。我可以从你的答案中学习。非常感谢你。我想投这一票。太棒了!谢谢@ADW!:)我认为你的方法更好。我可以从你的答案中学习。非常感谢你。我想投这一票。太棒了!谢谢@ADW!:)
      var message = row[2];       
      
        message = message.replace(/\n/g, "</li><li>");