Google Apps Script导出PDF参数配置报错:如何添加页面参数
解决Google Sheets导出指定范围PDF时添加页面参数的400错误
问题分析
添加页面尺寸、横向等参数后出现400错误,核心原因是URL参数拼接格式不规范,或参数组合未遵循Google Sheets导出接口的规则。
修改后的代码
以下代码保留指定范围导出功能的同时,正确集成所需页面参数:
function myFunction() { const cc = ""; // 填写抄送地址 const bcc = ""; // 填写密送地址 // 获取表格和工作表对象 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("Sheet1"); // 构造包含所有导出参数的URL const exportParams = [ "format=pdf", `range=A1:I5`, `gid=${sheet.getSheetId()}`, "size=0", // 页面尺寸:A4 "fzr=true", // 重复冻结行 "portrait=false", // 横向排版 "fitw=true", // 适应页面宽度 "gridlines=false", // 隐藏网格线 "printtitle=true", // 打印标题 "sheetnames=true", // 显示工作表名称 "pagenum=CENTER", // 页码居中 "attachment=true" // 作为附件下载 ].join("&"); const url = `https://docs.google.com/spreadsheets/d/${ss.getId()}/export?${exportParams}`; // 获取PDF Blob,开启调试模式查看完整错误 const response = UrlFetchApp.fetch(url, { headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() }, muteHttpExceptions: true // 调试完成后可移除该参数 }); // 调试:检查响应状态,打印错误内容 if (response.getResponseCode() !== 200) { Logger.log("错误响应详情:" + response.getContentText()); return; } const pdfBlob = response.getBlob().setName("指定范围表格导出.pdf"); // 为PDF设置文件名 // 获取收件人邮箱并发送邮件 const email = sheet.getRange("K2").getValue(); MailApp.sendEmail({ to: email, cc: cc || null, bcc: bcc || null, subject: "指定范围表格PDF导出", body: "附件是您需要的指定范围表格PDF文件。", attachments: [pdfBlob], }); // DriveApp.getFiles() // 保留该行用于自动获取Drive只读权限,确保导出功能正常 }
关键优化点
- 用数组拼接参数后统一转成URL字符串,避免手动拼接时出现多余符号或格式错误
- 新增
muteHttpExceptions: true,调试时可查看完整错误响应,快速定位参数问题 - 为导出的PDF设置明确文件名,提升收件人识别效率
- 完整保留原有的指定范围导出逻辑(
range=A1:I5)
调试建议
如果仍报错,查看日志中的完整错误响应,检查参数拼写是否正确(比如布尔值必须为小写true/false),同时确认脚本已获取Drive只读权限和邮件发送权限。
内容的提问来源于stack exchange,提问作者Timonek
相关产品推荐
相关产品推荐

