Excel Online(Office365)中Office Script发邮件方法及语言答疑
Office Script 发邮件问题解答
Office Script 开发语言说明
Office Script 采用 TypeScript 作为官方开发语言,脚本编辑器内置完整的TypeScript类型校验、智能提示能力,你在代码中写的workbook: ExcelScript.Workbook这类类型标注就是TypeScript的标准语法,编写完成的脚本会在运行时被编译为JavaScript在Excel Online的沙箱环境中执行。
原有代码报错原因
你写的代码无法运行核心有两个问题:
- Office Script 运行在隔离沙箱中,没有内置你调用的
Email.send()这类第三方SMTP库,也不支持直接引入外部npm包 - 出于企业数据安全要求,Office Script 不允许硬编码邮箱账号、密码直接调用外部SMTP服务,这类操作会被环境直接拦截。
官方推荐的Excel Online发邮件方案是Office Script + Power Automate组合实现,不需要写SMTP调用逻辑,直接复用当前登录账号的Office 365 Outlook权限发件,稳定性和安全性都有保障。
可直接使用的实现代码与步骤
第一步:编写Office Script
将以下代码粘贴到Office Script编辑器中,保存脚本(命名比如读取邮件参数):
function main(workbook: ExcelScript.Workbook): MailParams { const currentSheet = workbook.getActiveWorksheet(); // 从指定单元格读取邮件内容,统一转字符串避免类型匹配错误 const toAddress = currentSheet.getRange("B2").getValue().toString().trim(); const subject = currentSheet.getRange("C2").getValue().toString().trim(); const body = currentSheet.getRange("E2").getValue().toString().trim(); // 调试日志,运行脚本时可在控制台查看读取到的值 console.log("收件人:", toAddress); console.log("主题:", subject); // 将读取到的参数返回给Power Automate return { recipient: toAddress, mailSubject: subject, mailContent: body } } // 定义返回参数的类型结构(TypeScript标准语法) interface MailParams { recipient: string; mailSubject: string; mailContent: string; }
第二步:配置Power Automate流
- 打开Power Automate,创建新的即时云端流
- 触发条件选择「运行从Excel中选中的脚本」,选择你保存在OneDrive for Business中的目标Excel文件,选中刚才保存的
读取邮件参数脚本 - 添加新操作:搜索「Office 365 Outlook」,选择「发送电子邮件(V2)」操作
- 将脚本返回的
recipient绑定到「收件人」字段,mailSubject绑定到「主题」字段,mailContent绑定到「正文」字段 - 保存流后,在Excel Online中选中对应工作表直接运行流即可完成邮件发送,不需要额外输入账号密码。
注意:如果需要批量发送多封邮件,只需要修改脚本逻辑读取多行单元格数据,返回参数数组后在Power Automate中添加循环操作即可批量发件。
内容的提问来源于stack exchange,提问作者Bernietechy
相关产品推荐
相关产品推荐

