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

如何在Google Sheets中发送指定工作表PDF?报错求助

问题分析

报错TypeError: sourceSheet.getBlob is not a function的核心原因是:Sheet(工作表)对象没有getBlob()方法,该方法仅属于Spreadsheet(整个表格文档)对象。你之前的代码逻辑混乱——创建了临时工作表却未使用,反而调用原工作表的getBlob(),自然触发错误。

修复方案

核心思路:创建独立的临时表格文档,仅保留需要导出的"Recibo"工作表,再导出该临时文档为PDF,既避免导出整个原文档,又不破坏原文档结构。

修复后的完整代码:

function myFunction() {
  var originalSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = originalSpreadsheet.getSheetByName("Recibo");

  // 检查"Control"工作表是否存在,不存在则创建
  var targetSheet = originalSpreadsheet.getSheetByName("Control");
  if (!targetSheet) {
    targetSheet = originalSpreadsheet.insertSheet("Control");
  }

  // 创建独立的临时表格文档
  var tempSpreadsheet = SpreadsheetApp.create("TempRecibo");
  // 将目标工作表复制到临时文档
  sourceSheet.copyTo(tempSpreadsheet);
  // 删除临时文档默认的空白工作表
  tempSpreadsheet.deleteSheet(tempSpreadsheet.getSheetByName("Sheet1"));

  // 生成临时文档的PDF Blob
  var pdfBlob = tempSpreadsheet.getBlob().getAs('application/pdf');
  // 给PDF设置自定义文件名(可选,方便客户识别)
  pdfBlob.setName("Recibo_Gastos_Legales.pdf");

  // 获取收件人邮箱地址
  var recipientEmail = sourceSheet.getRange("C16").getValue();

  // 发送带附件的邮件
  var subject = "Recibo de gastos legales";
  var body = "Estimado cliente, adjunto encontrará su recibo de gastos legales.";
  MailApp.sendEmail(recipientEmail, subject, body, { attachments: [pdfBlob] });

  // 复制关键数据到"Control"工作表
  var targetLastRow = targetSheet.getLastRow() + 1;
  targetSheet.getRange(targetLastRow, 1).setValue(sourceSheet.getRange("L8").getValue());
  targetSheet.getRange(targetLastRow, 2).setValue(sourceSheet.getRange("L10").getValue());
  targetSheet.getRange(targetLastRow, 3).setValue(sourceSheet.getRange("C14").getValue());
  targetSheet.getRange(targetLastRow, 4).setValue(sourceSheet.getRange("L18").getValue());

  // 将临时文档移入回收站清理
  DriveApp.getFileById(tempSpreadsheet.getId()).setTrashed(true);
}
关键修改说明
  • 替换原有的「原文档内复制工作表」逻辑为「创建独立临时表格文档」,确保导出的PDF仅包含目标工作表
  • 使用tempSpreadsheet.getBlob()生成PDF(仅整个文档对象支持该方法)
  • 添加临时文档的清理逻辑,避免Drive中残留无用文件
  • 新增PDF自定义文件名,提升收件人体验

内容的提问来源于stack exchange,提问作者David Palma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:35:32