我正在使用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()类,但似乎我没有把它调用到表格中的脚本编辑器中(或者我说错了。)
如果我错过了表单中的设置,这只是一个复选框,请教育我:)如果这是我可以用代码修复的东西,我会喜欢一些建议。
谢谢!
答案 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变量。