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

Google Sheets脚本导出PDF时单元格图片显示CELLIMAGE问题求解

问题原因

  • 导出PDF丢失单元格图片的核心原因是你代码中多余的覆写值逻辑:
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
  • getValues() 方法仅能读取单元格内的文本、公式结果等纯值内容,无法读取插入到单元格内的图片对象,执行setValues()后相当于直接把原单元格的图片替换成了固定文本CELLIMAGE,自然导出的PDF不会显示图片。
  • 你创建的临时表格本身是原表的完整副本,自带所有单元格图片和格式,这步覆写值属于多余操作,反而破坏了原始内容。

修复后的完整代码

function exportFl() {
  var sheetName = "FL" 
  var value = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).getRange('E7').getValue();
  var folderID = "1x0tBqOP07e2XIzXHgvYqAaBiu7Zd7DfV"; // 保存PDF的文件夹ID
  var timeZone = Session.getScriptTimeZone();
  var date = Utilities.formatDate(new Date(), timeZone, "YYMMdd");
  var pdfName = value+"_FSL Conformance_"+ date;
  var sourceSpreadsheet = SpreadsheetApp.getActive();
  var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
  var folder = DriveApp.getFolderById(folderID);

  // 复制整个原表作为临时表格,保留所有格式和单元格图片
  var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("tmp_convert_to_pdf", folder))

  // 删除不需要的其他工作表
  var sheets = destSpreadsheet.getSheets();
  for (i = 0; i < sheets.length; i++) {
    if (sheets[i].getSheetName() != sheetName){
      destSpreadsheet.deleteSheet(sheets[i]);
    }
  }

  var destSheet = destSpreadsheet.getSheets()[0];
  // 删除多余空白行
  var r = destSheet.getDataRange();
  var startRow = r.getNumRows() + 1;
  var number = destSheet.getMaxRows() - startRow + 1;
  if (number > 0) destSheet.deleteRows(startRow, number);
  SpreadsheetApp.flush();

  // 导出PDF
  var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
  folder.createFile(theBlob);

  // 删除临时文件
  DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}

核心修改点

  • 移除了原代码中getValues()、setValues()的覆写逻辑,保留临时表自带的原始图片和格式
  • 其余原有功能(删除多余工作表、清理空白行、导出PDF、清理临时文件)均保留,不影响原有业务逻辑
  • 修改后导出的PDF即可正常显示单元格图片,和手动导出效果完全一致

内容的提问来源于stack exchange,提问作者Jon Bowles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 04:36:03