如何让formatDate与sendEmail生成的邮件内容保持单行显示?
邮件正文意外换行的解决方法
问题场景
以下是我的脚本片段:
var formail = Utilities.formatDate(duedate, "yyyy/ MM/ dd"); MailApp.sendEmail( docowner, // 메일 수신자 "Document Integration Committee의 평가 due date", "hello.\n" + place + code + 'of duedate' +formail + "is an day before" +before+"days. \nPlease check it." );
发送邮件后,正文里的place + code + 'of duedate' +formail + "is an day before" +before+"days."部分被意外拆分为两行:
New york 123 of duedate is an day before 7 days.
期望效果是这部分内容在同一行显示:
New york 123 of duedate 2022/07/25 is an day before 7 days.
尝试用\b转义无效。
解决步骤
- 修正
Utilities.formatDate的调用参数Utilities.formatDate的正确参数顺序是(日期对象, 时区字符串, 格式字符串),你当前错误地将格式字符串作为时区参数传入,这会导致formail生成异常内容(甚至可能包含隐藏换行)。修改为:
// 使用脚本所在时区,或者指定具体时区如"Asia/Seoul" var formail = Utilities.formatDate(duedate, Session.getScriptTimeZone(), "yyyy/MM/dd");
同时去掉格式字符串里的空格,避免生成带多余空格的日期。
- 清理变量中的隐藏空白字符
检查place、code变量是否从外部读取时携带了换行符或多余空白,用trim()方法去除首尾空白:
place = place.trim(); code = code.trim();
- 优化字符串拼接格式
拼接时给各部分添加空格,确保内容连贯且无意外换行:
"hello.\n" + place + " " + code + " of duedate " + formail + " is an day before " + before + " days.\nPlease check it."
内容的提问来源于stack exchange,提问作者김다빈
相关产品推荐
相关产品推荐

