JavaScript邮件功能 - 从字符串中剥离日期戳部分

时间:2017-02-03 18:58:49

标签: javascript object google-apps-script google-sheets datestamp

我正在使用Google应用脚本,并且具有基于自定义菜单发送电子邮件的工作功能。发送它们的函数是使用getRowsData()函数将所有列作为对象收集,将这些对象连接成字符串,并通过htmlBody参数发送它们,如下所示:

MailApp.sendEmail({
  to: recipient,
  subject: emailSubject,
  htmlBody: message,
});

消息变量包含文本和连接变量,应用HTML格式构建电子邮件。有一部分基于其他一些变量创建了一个Ordered列表,其中一个是日期,它是从工作表中的一列中提取的:

var message = "Other stuff here....Then"+
"<ol>"+
  "<li>"+desc+"</li>"+
  "<li>"+actions+"</li>"+
  "<li>"+datesPer+"</li>"+
  "<li><strong>Additional notes:</strong>"+actionNotes+"</li>"+
"</ol>"+
"More stuff below....";

发送电子邮件时,datesPer变量会在实际日期之后打印出一堆其他字符。我假设是因为附在表单上的表单插入了一个日期戳:

3. Date: Tue Nov 08 2016 00:00:00 GMT-0800 (PST)

00:00:00 GMT-0800(太平洋标准时间)是我想要改变的,使用常规时间格式(例如上午8:00)的零和删除之后的所有内容。存储日期的数组按照它们在电子邮件中出现的方式进行格式化,所以这是我告诉代码完全符合我想要的情况,而不是告诉它我想要什么。我在文档中看到了一个Utilities.formatDate()类,但似乎我没有把它调用到表格中的脚本编辑器中(或者我说错了。)

如果我错过了表单中的设置,这只是一个复选框,请教育我:)如果这是我可以用代码修复的东西,我会喜欢一些建议。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用javascript Date对象函数从日期字符串中获取时间。 您可以在此处找到有关它的更多详细信息:http://www.w3schools.com/js/js_date_methods.asp

您的脚本应该有这样一行:

datesPer = "Date:" + TimeArray[0]

您可以使用数组中的值创建新的Date对象来修改日期

var dateFromSheet = new Date (TimeArray[0])
var day = dateFromSheet.getDay() //(Returns 0- Sunday, 6 - Saturday)
var time = dateFromSheet.getHour() + ":" + dateFormSheet.getMinutes()

您可以根据自己的喜好格式化上述值,并将其传递给datesPer变量。