Google Sheets使用MailApp实现邮件自动化及签名、动态链接问题求解
解答
1. Gmail预设签名无法加载的解决方法
MailApp本身不支持直接调用Gmail账号的预设签名,可选择以下两种方案实现:
- 手动迁移签名到模板:打开Gmail设置的签名管理界面,全选你要使用的签名内容,转换为HTML代码后直接粘贴到你的邮件HTML模板的末尾即可,后续调整签名直接修改模板对应代码即可。
- 动态拉取签名:如果需要自动同步Gmail账号的最新签名,可改用Gmail API搭配GmailApp实现:先在Apps Script编辑器的「服务」中添加Gmail API,调用
Gmail.Users.Settings.SendAs.get("me", "你的发件邮箱地址")获取签名的HTML内容,再插入到邮件内容末尾即可。
2. HTML模板绑定LinkedIn变量的解决方法
你当前的问题是没有将JS中获取的变量传递给HTML模板,且模板内变量引用的写法不符合Apps Script模板规范,按以下步骤修改即可:
第一步:修改JS代码,给模板传递变量
在创建模板后、渲染模板前,将你获取的LinkedIn变量挂载到模板实例上,修改后的JS代码如下:
var linkedin_link = SpreadsheetApp.getActiveSheet().getRange(1, 1).getValue(); var templ = HtmlService.createTemplateFromFile("MailTemplate"); // 给模板传递变量 templ.linkedin_link = linkedin_link; var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: "xxx@gmail.com", subject: "Automation", htmlBody: message, });
第二步:修改HTML模板,正确引用变量
Apps Script的HTML模板需要使用<?= 变量名 ?>的语法输出变量值,修改后的a标签代码如下:
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <!-- 注意如果你的单元格存储的是完整的LinkedIn链接,直接写<?= linkedin_link ?>即可,不需要拼接前缀 --> <a href="https://linkedin.com/<?= linkedin_link ?>">LINKEDIN</a> </body> </html>
补充说明:如果需要给多名用户发送邮件,遍历表格行数据时,每一行对应的LinkedIn变量重新赋值给模板再渲染即可,不需要修改模板文件本身。
内容的提问来源于stack exchange,提问作者SpotyPie
相关产品推荐
相关产品推荐

