谷歌脚本时间戳-格式化电子邮件输出



我不确定我在这里做错了什么,这可能真的很简单。。。在浏览了网络并尝试了数百个不同的例子后,我空手而归,无法获得所需的格式。我的脚本可以工作,发送电子邮件,所有的值都在那里,但日期格式不是我们想要的。所以,事情是这样的:

我有一个基本的脚本,当受访者提交表单时,它会从模板发送HTML电子邮件。时间戳、开始(日期和时间(、结束(仅限时间(值是必需的,并打印在HTML电子邮件中,但它显示了一个完整的时间戳输出,例如:;2020年11月3日星期二11:39:28 GMT-0700(山地标准时间(";

我试图做的是将电子邮件中显示的时间戳值格式化为:";2020年11月3日星期二HH:mm";

这是我正在使用的脚本:

function onFormSubmit(e) {
var htmlBody = HtmlService.createTemplateFromFile('email');  
var rng = SpreadsheetApp.getActiveSheet().getActiveRange();
var timestamp = Utilities.formatDate(new Date(), "MST" , "MM-dd-yyyy | HH:mm:ss");
var email = rng.getValues()[0];
var body = HtmlService.createTemplateFromFile("email");
var to = 'foo@bar';
var subject = 'Activity Report ' + email[0] + '';

htmlBody.timestamp = email[0];
htmlBody.start = email[1];
htmlBody.end = email[2];
htmlBody.activityobserved = email[3];
htmlBody.summary = email[4];
htmlBody.actiontaken = email[5];
htmlBody.attachments = email[6];

var email_html = htmlBody.evaluate().getContent();

MailApp.sendEmail({
to: to,
subject: subject,
htmlBody: email_html,
replyTo:'bar@foo',
});
}

不要忘记实际使用timestamp。为了获得";"星期二";在你的约会中,你可以使用";EEE";。我按照你在问题中指定的格式设置了下面的日期格式。

function onFormSubmit(e) {
// ...
var timestamp = Utilities.formatDate(new Date(), "MST" , "EEE MMM dd yyyy HH:mm");
// ...
htmlBody.timestamp = timestamp;
htmlBody.start = Utilities.formatDate(email[1], "MST" , "EEE MMM dd yyyy HH:mm");
htmlBody.end = Utilities.formatDate(email[2], "MST" , "EEE MMM dd yyyy HH:mm");
// ...
}

解决方案:

htmlBody对象中不包含变量timestamp。相反,您使用的是它的原始源值。

替换

htmlBody.timestamp = email[0];

htmlBody.timestamp = timestamp;

根据您的评论更新:

不过,我对如何格式化开始和结束时间有点困惑。它们仍然显示完整的输出。

假设您的工作表中有日期对象,

替换

htmlBody.start = email[1];
htmlBody.end = email[2];

带有

htmlBody.start = Utilities.formatDate(new Date(email[1]), "MST" , "EEE MMM dd yyyy HH:mm");
htmlBody.end = Utilities.formatDate(new Date(email[2]), "MST" , "EEE MMM dd yyyy HH:mm");

最新更新