0

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

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

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

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 (PST) 是我想要更改的,零使用常规时间格式(例如上午 8:00),之后的所有内容都被删除。存储日期的数组将它们格式化为它们在电子邮件中出现的方式,所以这是一个我告诉代码我想要什么的情况,而没有告诉它我想要什么。我在文档中看到了 Utilities.formatDate() 类,但似乎我不能在工作表中将其调用到脚本编辑器中(或者我做错了。)

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

谢谢!

4

1 回答 1

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 变量。

于 2017-02-03T23:18:54.637 回答