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

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

以下是修正后的完整代码:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:30:16