Google Apps Script指定区域生成PDF问题求助
解决Google Apps Script导出指定区域为PDF的问题
你的代码存在两个核心问题,导致无法精准导出目标区域:
- URL拼接语法错误:
+ '&gid=' + sourceSheet.getSheetId();这一行末尾多了分号,直接截断了后续区域参数的拼接,导致区域控制规则完全失效。 - 区域参数索引错误:Google Sheets导出PDF的
r1/c1/r2/c2参数采用0起始索引,你需要导出的B2:G23对应索引需要调整:- B列对应第1列 →
c1=1 - 第2行对应第1行 →
r1=1 - G列对应第6列 →
c2=6 - 第23行对应第22行 →
r2=22
- B列对应第1列 →
以下是修正后的完整代码:
function createblobpdf(sheetName, pdfName) { var sourceSpreadsheet = SpreadsheetApp.getActive(); var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName); var url = 'https://docs.google.com/spreadsheets/d/' + sourceSpreadsheet.getId() + '/export?exportFormat=pdf&format=pdf' + '&size=7' // 纸张尺寸:legal/letter/A4 + '&portrait=true' // 方向:false为横向 + '&fitw=true' // 适配页面宽度:false为实际尺寸 + '&sheetnames=false&printtitle=false' // 隐藏页眉页脚 + '&pagenum=RIGHT&gridlines=false' // 隐藏页码和网格线 + '&fzr=true' // 每页重复冻结行表头 + '&horizontal_alignment=CENTER' // 水平对齐:LEFT/CENTER/RIGHT + '&vertical_alignment=TOP' // 垂直对齐:TOP/MIDDLE/BOTTOM + '&gid=' + sourceSheet.getSheetId() // 目标工作表ID + '&ir=false' // 忽略指定区域外的行 + '&ic=false' // 忽略指定区域外的列 + '&r1=1' // 起始行(0索引,对应第2行) + '&c1=1' // 起始列(0索引,对应B列) + '&r2=22' // 结束行(0索引,对应第23行) + '&c2=6'; // 结束列(0索引,对应G列) // 获取PDF blob并命名(可根据需求添加保存到Drive等逻辑) var blob = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}}).getBlob(); blob.setName(pdfName + '.pdf'); return blob; }
补充说明:
- 必须携带
Authorization请求头,否则无法访问私有表格的导出接口; ir=false和ic=false确保导出时只包含指定的行和列,不会额外渲染区域外内容。
内容的提问来源于stack exchange,提问作者Pojok Produktif
相关产品推荐
相关产品推荐

