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

为什么Google Apps Script中getBlob()无法获取Google Doc最新版本?

问题原因

写入Google Doc的改动默认会先暂存在Apps Script的本地内存中,没有实时同步到云端,直接调用Document实例的getBlob()方法会读取到缓存的旧版本内容,你看到云端内容已更新是因为后台异步同步已经完成。

解决方法
  • 强制提交本地改动到云端
    所有文档内容插入操作完成后,调用doc.saveAndClose()方法,将内存中所有未提交的改动同步到Google云端硬盘,同时关闭当前文档实例。如果后续还需要操作该文档,可通过DocumentApp.openById(doc.getId())重新打开实例。
  • 从云端直接拉取最新文件流
    不要使用Document实例的getBlob()方法,改为通过DriveApp读取云端最新的文件内容,完全规避本地缓存影响,如果需要输出PDF可以显式指定MIME类型:
// 完成所有文档写入操作后执行
doc.saveAndClose();

// 可选:如果偶发还是拿到旧内容,可加1.5秒等待给云端同步预留缓冲时间
// Utilities.sleep(1500);

// 从Drive读取最新版本的文档,转成PDF blob
const latestDocBlob = DriveApp.getFileById(doc.getId())
  .getAs(MimeType.PDF)
  .setName("自定义文件名.pdf");

// 发送邮件
MailApp.sendEmail({
    to: email,
    subject: "Subject line",
    body: "Body",
    attachments: [latestDocBlob]
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:54:03