如何在Apps Script中调整Google Sheets导出PDF的页面尺寸?
自定义Google Sheets导出PDF的纸张尺寸/匹配实际大小
原脚本使用getBlob()导出PDF时无法自定义纸张参数,要实现自定义尺寸或匹配文档实际大小,需要改用构造导出URL并通过OAuth授权请求的方式,具体方案如下:
核心思路
通过Google Sheets的导出API URL,添加自定义参数控制PDF的纸张尺寸、适配方式等,再用Drive API保存生成的PDF文件。
修改后的完整脚本
function exportSheetToCustomPDF() { var sheetName = "你的工作表名称"; var ssId = "你的Spreadsheet ID"; var ss = SpreadsheetApp.openById(ssId); var targetSheet = ss.getSheetByName(sheetName); // 修正原脚本的变量错误:获取R3单元格作为文件名 var pdfName = targetSheet.getRange("R3").getValue(); // 构造PDF导出URL,添加自定义参数 var exportUrl = "https://docs.google.com/spreadsheets/d/" + ssId + "/export?"; var exportParams = [ "format=pdf", "size=A4", // 可选值:Letter/A4/A3/Legal/Tabloid/Statement/Executive等 "fitw=1", // 设置为1表示适配页面宽度,0则按纸张尺寸固定 "sheetnames=false", // 是否显示工作表名称 "printtitle=false", // 是否显示文档标题 "pagenumbers=false", // 是否显示页码 "gridlines=false", // 是否显示网格线 "fzr=false", // 是否冻结首行 "portrait=true", // true为纵向,false为横向 "gid=" + targetSheet.getSheetId() // 指定导出的工作表ID ].join("&"); var fullUrl = exportUrl + exportParams; // 获取OAuth授权令牌,用于访问导出URL var token = ScriptApp.getOAuthToken(); // 发送请求获取PDF blob var response = UrlFetchApp.fetch(fullUrl, { headers: { "Authorization": "Bearer " + token } }); var pdfBlob = response.getBlob().setName(pdfName); // 保存到Google Drive DriveApp.createFile(pdfBlob); }
参数说明
size: 指定纸张尺寸,常用值有A4、A3、Legal、Tabloid等,替换成你需要的尺寸即可fitw=1: 开启后会自动适配工作表的实际宽度,无需手动设置纸张尺寸,适合内容宽度不固定的场景portrait: 控制纸张方向,true为纵向,false为横向gid: 确保只导出目标工作表,避免导出整个文档
注意事项
- 原脚本中
var name = sheet.getRange("r3").getValue();存在变量未定义的问题,已修正为targetSheet.getRange("R3").getValue() - 确保脚本有足够的权限(首次运行时会提示授权)
- 如果需要导出多个工作表,可修改
gid参数为多个工作表ID用逗号分隔(如gid=12345,gid=67890)
内容的提问来源于stack exchange,提问作者Clown Aspirant
相关产品推荐
相关产品推荐

