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

求Office Script:将Excel指定范围转为PNG插入Outlook 365邮件正文

Office Script 实现Excel指定区域导出为PNG并插入Outlook邮件正文

以下是适配Office 365云端环境的Office Script解决方案,可直接绑定到Excel按钮执行:

async function main(workbook: ExcelScript.Workbook) {
    // 1. 获取指定命名区域"form"
    const formRange = workbook.getRange("form");
    if (!formRange) {
        throw new Error("未找到命名为'form'的区域,请检查区域命名是否正确");
    }

    // 2. 将区域导出为base64格式的PNG图片
    const imageBase64 = await formRange.getImageAsBase64(ExcelScript.PictureFormat.png);

    // 3. 构造Outlook邮件的HTML正文,嵌入base64图片
    const htmlBody = `
        <html>
            <body>
                <p>以下是提交的服务请求表单:</p>
                <img src="data:image/png;base64,${imageBase64}" alt="服务请求表单">
            </body>
        </html>
    `;

    // 4. 创建Outlook邮件并预填信息
    await OfficeRuntime.auth.getAccessToken({ allowConsentPrompt: true, allowSignInPrompt: true });
    const mailPayload = {
        subject: "服务请求表单提交",
        toRecipients: ["指定收件人邮箱@domain.com"], // 替换为实际收件人邮箱
        body: {
            content: htmlBody,
            contentType: "html"
        }
    };

    // 调用Outlook API创建并发送邮件
    const response = await fetch("https://graph.microsoft.com/v1.0/me/microsoft.graph.sendMail", {
        method: "POST",
        headers: {
            "Authorization": `Bearer ${await OfficeRuntime.auth.getAccessToken()}`,
            "Content-Type": "application/json"
        },
        body: JSON.stringify({ message: mailPayload, saveToSentItems: true })
    });

    if (!response.ok) {
        throw new Error(`创建邮件失败:${await response.text()}`);
    }

    console.log("邮件已成功发送并保存到已发送邮件");
}

关键说明:

  • 区域定位:通过workbook.getRange("form")直接读取命名区域,确保Excel中已正确将$A$1:$I$27命名为form。
  • 图片导出:使用getImageAsBase64方法直接获取云端Excel区域的PNG编码,无需本地文件流转,完全适配Office 365环境。
  • Outlook集成:依托Microsoft Graph API创建邮件,HTML正文直接嵌入base64图片,收件人预填只需修改toRecipients数组内的邮箱地址。
  • 权限处理:首次执行会弹出权限申请,需允许脚本访问Excel和Outlook的相关权限。

使用步骤:

  1. 在Excel网页版中,点击「自动化」→「新建脚本」,粘贴上述代码并保存。
  2. 回到工作表,通过「插入」→「按钮」添加控件,绑定刚保存的脚本。
  3. 测试执行:填写表单后点击按钮,自动生成带表单截图的Outlook邮件,收件人已预填完成。

可选调整:

  • 若需将邮件保存为草稿而非直接发送,将Graph API路径改为https://graph.microsoft.com/v1.0/me/messages,请求方法保持POST,移除saveToSentItems参数。
  • 可自行修改邮件主题subject和HTML正文内容,匹配业务场景需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:55:10