Javascript 根据多个条件合并用于发送到电子邮件的行
怎么了!目前,我有一个工作代码,如果“提醒日期”是今天或之前,并且“完成”复选框未选中,则允许从google sheets发送电子邮件 目前,我使用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
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”+ “
- ”+消息+“
- ”+
“
”+ “您可以通过单击访问任务监视表。”, 名称:“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>");