如何在Google Apps Script中为特定邮件模板跳过插入图片
解决Extension模板跳过图片且避免变量未定义的问题
以下是三种可行的解决方法,按需选择:
方案1:提前初始化变量,发送时动态判断是否添加图片
先在分支外部初始化变量保证全局存在,仅在需要图片的分支赋值,发送时根据变量状态决定是否插入图片:
// 提前初始化变量,避免未定义报错 var myimage = null; if (inputSheet.initialadvice == "Training Visa"){ var emailtemp = HtmlService.createTemplateFromFile("Training Visa"); var subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Training Visa Application - Initiation"; myimage = DriveApp.getFolderById('folder id').getFilesByName('training.png').next().getBlob(); } else if (inputSheet.initialadvice == "Extension"){ var emailtemp = HtmlService.createTemplateFromFile("Extension"); var subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Extension Application - Initiation"; } // 构建基础邮件配置 var mailOptions = { from: alias, to: me, cc: caseworkeremail, htmlBody: emailtemphtml, name: "mailbox" }; // 仅当图片存在时,添加inlineImages配置 if (myimage !== null) { mailOptions.inlineImages = { pngimage: myimage }; } // 发送邮件 MailApp.sendEmail(inputSheet.caseworkerEmail, subject, "", mailOptions);
方案2:分支内独立构建邮件配置
直接在每个分支里定义对应场景的邮件配置,Extension分支不包含inlineImages属性:
var emailtemp, subject, mailOptions; if (inputSheet.initialadvice == "Training Visa"){ emailtemp = HtmlService.createTemplateFromFile("Training Visa"); subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Training Visa Application - Initiation"; var myimage = DriveApp.getFolderById('folder id').getFilesByName('training.png').next().getBlob(); mailOptions = { from: alias, to: me, cc: caseworkeremail, htmlBody: emailtemphtml, inlineImages: { pngimage: myimage }, name: "mailbox" }; } else if (inputSheet.initialadvice == "Extension"){ emailtemp = HtmlService.createTemplateFromFile("Extension"); subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Extension Application - Initiation"; mailOptions = { from: alias, to: me, cc: caseworkeremail, htmlBody: emailtemphtml, name: "mailbox" }; } // 发送邮件 MailApp.sendEmail(inputSheet.caseworkerEmail, subject, "", mailOptions);
方案3:给Extension分支赋值空占位Blob
如果不想修改邮件配置结构,可以给Extension分支的myimage赋值空图片Blob,保证变量存在的同时不会插入有效图片:
var emailtemp, subject, myimage; if (inputSheet.initialadvice == "Training Visa"){ emailtemp = HtmlService.createTemplateFromFile("Training Visa"); subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Training Visa Application - Initiation"; myimage = DriveApp.getFolderById('folder id').getFilesByName('training.png').next().getBlob(); } else if (inputSheet.initialadvice == "Extension"){ emailtemp = HtmlService.createTemplateFromFile("Extension"); subject ="[DRAFT] "+inputSheet.engagement+" - HK - "+inputSheet.lastname+", "+inputSheet.firstname+" - Extension Application - Initiation"; // 赋值空Blob,避免变量未定义 myimage = Utilities.newBlob('', 'image/png'); } // 发送邮件 MailApp.sendEmail( inputSheet.caseworkerEmail, subject, "", { from: alias, to: me, cc: caseworkeremail, htmlBody: emailtemphtml, inlineImages: { pngimage: myimage }, name: "mailbox" } );
内容的提问来源于stack exchange,提问作者WN Legacy
相关产品推荐
相关产品推荐

