【发布时间】:2020-11-03 18:59:45
【问题描述】:
我不确定我在这里做错了什么,这可能真的很简单......在搜索网络并尝试找到数百个不同的示例之后,我空手而归,无法获得所需的格式。我的脚本有效,发送电子邮件,所有值都在那里,但日期格式不是我们所追求的。所以,这是怎么回事:
我有一个基本脚本,当受访者提交表单时,它会从模板发送 HTML 电子邮件。需要时间戳、开始(日期和时间)、结束(仅限时间)值,并打印在 HTML 电子邮件中,但它显示的是完整的时间戳输出,例如:“Tue Nov 03 2020 11:39:28 GMT -0700(山地标准时间)"
我要做的是将电子邮件中显示的时间戳值格式化为:“Tue Nov 03 2020 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中成功保存了一个格式化日期,但您没有在任何地方使用它。 -
好吧。我知道我错过了什么!所以我将
htmlBody.timestamp = email[0];更改为htmlBody.timestamp = timestamp;,这似乎效果很好。 -
我对如何格式化开始和结束时间有点困惑。他们仍在显示完整的输出
-
你可以在设置
htmlBody.start和htmlBody.end时重复Utilities.formatDate()调用。 -
详情见我的回答