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

使用Google Apps Script导出Google Docs为PDF时遇401错误求助

解决方案:修复401权限错误并实现浏览器直接下载PDF

一、解决401权限错误

你的代码出现401错误核心原因有两个:

  • createPDF函数里的文档URL硬编码了固定ID,没有使用动态传入的目标文档ID
  • OAuth令牌缺少必要的API权限,或运行脚本的账号无目标文档访问权限

修复要点:

  • 将documentId作为参数传递给createPDF函数,替换硬编码的导出URL
  • 确保启用Google Docs API和Google Drive API(在脚本编辑器的「扩展」→「Apps Script API」中开启,或在对应Google Cloud Console项目里启用)
  • 运行脚本时完成授权流程,确保账号拥有目标文档的访问权限

二、实现浏览器直接下载PDF

Google Apps Script是服务器端脚本,要触发浏览器直接下载,需将脚本部署为Web App,通过HTTP响应返回PDF文件流。

修改后的完整代码

// Code.gs
function doGet(e) {
  // 从请求参数获取文档ID,或直接指定固定ID
  const documentId = e.parameter.docId || '你的目标文档ID';
  try {
    const doc = Docs.Documents.get(documentId);
    return createPDF(doc.title, documentId);
  } catch (err) {
    console.log('获取文档失败:%s', err.message);
    return ContentService.createTextOutput('下载失败:' + err.message).setMimeType(ContentService.MimeType.TEXT);
  }
}

function createPDF(pdfName, documentId) {
  // 动态生成PDF导出URL
  const url = `https://docs.google.com/document/d/${documentId}/export?format=pdf`;
  const params = { 
    method: "GET", 
    headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
    muteHttpExceptions: true // 开启后可获取详细错误信息
  };
  
  const response = UrlFetchApp.fetch(url, params);
  if (response.getResponseCode() !== 200) {
    throw new Error('导出PDF失败:' + response.getContentText());
  }
  
  const blob = response.getBlob().setName(`${pdfName}.pdf`);
  
  // 返回下载响应,触发浏览器自动下载
  return ContentService.createTextOutput(blob.getDataAsString())
    .setMimeType(ContentService.MimeType.PDF)
    .setHeaders({
      'Content-Disposition': `attachment; filename="${encodeURIComponent(pdfName)}.pdf"`
    });
}

部署Web App步骤

  1. 在脚本编辑器右上角点击「部署」→「新部署」
  2. 类型选择「Web应用」
  3. 执行权限选择「我自己」(若需开放给其他用户,选「任何人,甚至匿名」,但需确保目标文档权限为公开可查看)
  4. 设置访问权限后点击「部署」
  5. 复制生成的Web App URL,访问时可通过?docId=目标文档ID参数指定要导出的文档(若代码中已固定ID,直接访问URL即可)

注意事项

  • 若使用匿名访问,需将目标文档权限设置为「任何人可查看」
  • 首次部署或运行时,需完成OAuth授权流程,允许脚本访问Docs和Drive API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:35:00