google-apps-script - 如何格式化来自 Google Apps Script 的电子邮件正文中的日期?
问题描述
我有一个自动电子邮件脚本,邮件正文中是一个当前正在表达的日期,Thu Nov 28 2019 00:00:00 GMT+1300 (NZDT)
但我希望它表达出来28 November 2019
。
下面是我的代码。关于日期的代码是:
var date = sheet.getRange(i, 7).getValue();
var formattedDate = Utilities.formatDate(date, "dd MMMMM yyyy")
//Email Alerts for H&S Reviews
function sendEmails() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("H&S Reviews").activate();
var lastRow = sheet.getLastRow();
var message = spreadsheet.getSheetByName("Email Alerts").getRange(1,1).getValue();
for (var i = 4;i<=lastRow;i++){
var emailAddress = sheet.getRange(i, 9).getValue();
var firstName = sheet.getRange(i, 10).getValue();
var todaysDate = sheet.getRange(1, 11).getValue();
var date = sheet.getRange(i, 7).getValue();
var formattedDate = Utilities.formatDate(date, "dd MMMMM yyyy")
var task = sheet.getRange(i, 3).getValue();
var description = sheet.getRange(i, 4).getValue();
var messageBody = message.replace("{name}",firstName).replace("{Task}",task).replace("{Description}",description).replace("{Date}",date);
var subject = "Health & Safety Review Task";
var sendDate = sheet.getRange(i, 11).getValue();
var sheetDate = new Date(sendDate);
Sdate=Utilities.formatDate(todaysDate,"GMT+0200","dd-MM-yyyy")
SsheetDate=Utilities.formatDate(sheetDate,"GMT+0200", "dd-MM-yyyy")
if (Sdate == SsheetDate){
var subject = "Health & Safety Review Task";
MailApp.sendEmail(emailAddress, subject, messageBody);
}
}
}
我将不胜感激有关此的一些帮助。
解决方案
您已经在脚本中使用了Utilities.formatDate()。您可以应用它来生成像“2019 年 11 月 28 日”这样的格式。要获得序数后缀,请考虑这个答案。
如果您对“2019 年 11 月 28 日”格式没问题,那么只需更改这两行
var formattedDate = Utilities.formatDate(date, "GMT+0200", "dd MMMMM yyyy");
// ... other code ...
var messageBody = message.replace("{name}",firstName).replace("{Task}",task).replace("{Description}",description).replace("{Date}",formattedDate);
您的最终代码将是:
//Email Alerts for H&S Reviews
function sendEmails() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("H&S Reviews").activate();
var lastRow = sheet.getLastRow();
var message = spreadsheet.getSheetByName("Email Alerts").getRange(1,1).getValue();
for (var i = 4;i<=lastRow;i++){
var emailAddress = sheet.getRange(i, 9).getValue();
var firstName = sheet.getRange(i, 10).getValue();
var todaysDate = sheet.getRange(1, 11).getValue();
var date = sheet.getRange(i, 7).getValue();
var formattedDate = Utilities.formatDate(date, "GMT+0200", "dd MMMMM yyyy");
var task = sheet.getRange(i, 3).getValue();
var description = sheet.getRange(i, 4).getValue();
var messageBody = message.replace("{name}",firstName).replace("{Task}",task).replace("{Description}",description).replace("{Date}",formattedDate);
var subject = "Health & Safety Review Task";
var sendDate = sheet.getRange(i, 11).getValue();
var sheetDate = new Date(sendDate);
Sdate=Utilities.formatDate(todaysDate,"GMT+0200","dd-MM-yyyy")
SsheetDate=Utilities.formatDate(sheetDate,"GMT+0200", "dd-MM-yyyy")
if (Sdate == SsheetDate){
var subject = "Health & Safety Review Task";
MailApp.sendEmail(emailAddress, subject, messageBody);
}
}
}
推荐阅读
- mysql - 如何在 JDBC 源连接器中设置偏移量以从 Kafka 中的 MySQL 表中获取所有数据
- halide - 从 halide::buffer 构造一个 halide::runtime:buffer
- jquery - 根据表单输入在css中动画进度条(可能的Jquery)
- python - XGBRegressor 不断返回 100% 的准确率
- android - Android X 中的 Google Map and Place 问题
- c++ - 什么是 std::false_type 或 std::true_type?
- linux - 为什么bash文本输出和下一个提示之间没有空格以及如何修复它?
- javascript - 扩展运算符在数组中添加带有键的元素
- excel - 使用 .find 根据 csv 文件中的列名返回列号
- php - 我如何动态更改下拉列表中复选框基础的值