You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel Script Lab中发送电子邮件?

Excel Script Lab 调用Graph API发送邮件的实现方案

首先明确核心结论:Excel Script Lab 没有预装msgraph-sdk-javascript相关配套支持库,其运行在Office.js沙箱环境中,确实不支持import/require模块引入语法,无法按常规npm包引入方式使用msgraph-sdk-javascript,可通过以下两种路径实现需求:

  • 方案一:直接调用Graph REST接口(推荐,无额外依赖)
    这是适配Script Lab环境成本最低的方案,不需要加载任何第三方库:

    1. 调用Office.js内置的SSO能力Office.auth.getAccessToken()获取Microsoft Graph访问令牌,无需自行实现OAuth授权流程
    2. 拿到令牌后,通过环境原生支持的fetch方法构造POST请求,调用Graph的发信接口即可,请求头携带合法授权信息,请求体按接口规范传入收件人、邮件主题、正文等参数
      最小可运行示例代码:
    async function sendTestEmail() {
      // 获取Graph访问令牌
      const token = await Office.auth.getAccessToken({
        allowSignInPrompt: true,
        forMSGraphAccess: true
      });
    
      // 构造邮件内容
      const mailContent = {
        message: {
          subject: "来自Excel Script Lab的测试邮件",
          body: {
            contentType: "Text",
            content: "这是通过Microsoft Graph API发送的测试邮件正文"
          },
          toRecipients: [
            { emailAddress: { address: "target@example.com" } }
          ]
        },
        saveToSentItems: true
      };
    
      // 发起发信请求
      const res = await fetch("https://graph.microsoft.com/v1.0/me/sendMail", {
        method: "POST",
        headers: {
          "Authorization": `Bearer ${token}`,
          "Content-Type": "application/json"
        },
        body: JSON.stringify(mailContent)
      });
    
      if (!res.ok) {
        throw new Error(`发信失败,接口返回状态:${res.status}`);
      }
    }
    
  • 方案二:加载msgraph-sdk-javascript的UMD浏览器版本
    如果需要用到SDK封装的批量请求、分页查询等高级能力,无需使用模块引入语法,直接在Script Lab的HTML编辑面板中通过<script>标签引入SDK的UMD构建产物,引入后全局作用域会直接挂载SDK客户端对象,搭配SSO获取的访问令牌初始化客户端后即可正常调用SDK封装的所有方法。

注意:调用前需要在外接程序权限配置中申请Microsoft Graph的Mail.Send委托权限,否则接口会返回403无权限错误。

内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:39:38