如何修改循环内IF语句代码,使邮件主题含合同到期状态
问题描述
我有一套可正常运行的代码,当合同到期日距离当前日期为90天、60天、30天或到期当日时,会发送邮件提醒。目前邮件主题未包含到期状态(如“将于30天后到期”),该状态仅在邮件正文中显示。请问如何修改代码,让到期状态也显示在邮件主题中?
当前状态示例
主题:(TEST) ALERT: C1PH TPM Contract FFMIRAVITE INC with Contract # 41501
邮件正文:, , with contract name , and contract number will expire in 30 days.
修改方案
核心是将传递给sendEmail函数的到期状态文本,同时整合到邮件主题中,具体修改如下:
修改后的完整代码
for (var i = 0; i < duedates.length; i++) { if (duedates[i] == formattedCurrentDate) { sendEmail(i + 2, sheetquery, " is Expired as of today."); } else if (duedates[i] == formattedThirtyDaysFromNow) { sendEmail(i + 2, sheetquery, " will expire in 30 days."); } else if (duedates[i] == formattedSixtyDaysFromNow) { sendEmail(i + 2, sheetquery, " will expire in 60 days."); } else if (duedates[i] == formattedNinetyDaysFromNow) { sendEmail(i + 2, sheetquery, " will expire in 90 days."); } } function sendEmail(rowIndex, sheetquery, expirationStatus) { var thirdparty = sheetquery.getRange(rowIndex, 3).getValue(); var contracttype = sheetquery.getRange(rowIndex, 4).getValue(); var contractnumber = sheetquery.getRange(rowIndex, 6).getValue(); var contractname = sheetquery.getRange(rowIndex, 7).getValue(); var recipientsTO = "myemail@gmail.com"; // 将到期状态添加到主题末尾,用竖线分隔提升可读性 var subject = "(TEST) ALERT: C1PH TPM Contract " + thirdparty + " with Contract # " + contractnumber + " | " + expirationStatus.trim(); var message = thirdparty + ", " + contracttype + ", with contract name " + contractname + ", and contract number " + contractnumber + expirationStatus; GmailApp.sendEmail(recipientsTO, subject, message); }
关键修改点
- 将
sendEmail函数的第三个参数名从isExpiringToday改为expirationStatus,更准确反映参数的实际用途(涵盖所有到期提醒状态) - 在主题字符串末尾拼接到期状态文本,用
|作为分隔符优化视觉效果,同时调用trim()去除状态文本前后冗余空格 - 保留原有邮件正文的生成逻辑,确保正文内容不受影响
内容的提问来源于stack exchange,提问作者Tinkinips
相关产品推荐
相关产品推荐

