如何使用Google Script调用本地Outlook,在Google Sheets录入数据后预填邮件发送
实现方案
因为Google Apps Script运行在云端服务器,无法直接调用本地安装的Outlook客户端,最符合你公司政策的可行方案是采用mailto协议唤起本地默认邮件客户端(即你公司配置的Outlook),可直接预填收件人、邮件主题、正文内容,全程不会涉及文件上传到Google Drive的操作。
代码修改步骤
1. 修改Google Apps Script代码
调整addNewItem函数,完成数据写入表格后,返回需要预填的邮件相关参数:
function addNewItem(form_data) { var sheet = SpreadsheetApp.getActive().getSheetByName('Quoting'); // 写入数据到表格 sheet.appendRow([form_data.first_name, form_data.last_name, form_data.email, form_data.Date]); // 构造邮件预填内容,可根据实际需求调整 var emailParams = { to: form_data.email, // 这里替换为你需要的员工收件邮箱,示例用录入的报价人邮箱 subject: encodeURIComponent(`报价通知:${form_data.first_name}项目`), body: encodeURIComponent(` 您好: 现将项目报价信息同步如下: - 项目名称:${form_data.first_name} - 建造商:${form_data.last_name} - 报价人:${form_data.email} - 截止日期:${form_data.Date} 请按需处理。 `) } return emailParams; }
2. 修改HTML表单的提交逻辑
调整原提交事件的异步处理逻辑,待服务端返回参数后再唤起Outlook、关闭对话框:
document.querySelector("#myform").addEventListener("submit", function(e) { e.preventDefault(); //stop form from submitting // 异步调用服务端写入逻辑,成功后触发mailto唤起Outlook google.script.run .withSuccessHandler(function(params){ // 构造mailto链接 var mailtoUrl = `mailto:${params.to}?subject=${params.subject}&body=${params.body}`; // 唤起本地默认邮件客户端 window.open(mailtoUrl); // 关闭对话框 google.script.host.close(); }) .addNewItem(this); } );
注意事项
mailto协议本身有长度限制,常规纯文本正文内容都可以正常承载,完全满足普通通知类邮件的预填需求- 该方案不会上传任何文件到Google云端,附件可后续直接在Outlook中选择公司本地服务器上的文档添加,完全符合你公司的安全政策
内容的提问来源于stack exchange,提问作者banksie
相关产品推荐
相关产品推荐

