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

Google Sheet复制公式生成的CellImage报错TypeError,求解决方案

解决Google Sheets复制公式生成图片的脚本问题

错误原因

  1. 工作表未找到:报错TypeError: Cannot read properties of null (reading 'getRange')意味着sheet2(或sheet1)是null,也就是你指定的工作表名称和实际表格中的名称不匹配——比如实际表名是Sheet2(无空格),而非Sheet 2,或者存在大小写、拼写错误。
  2. 复制方法错误:getValue()无法读取公式生成的图片单元格内容,会返回null,因为该单元格的核心内容是公式,不是图片本身。

修复方案

第一步:确认工作表名称

先核对当前表格里Sheet 1和Sheet 2的名称,确保和脚本里getSheetByName的参数完全一致,包括空格、大小写。

第二步:修改脚本

以下两种方法都能解决问题:

方法1:复制单元格公式

直接获取源单元格的公式,写入目标单元格,让目标单元格自动生成QR码图片:

function myFunction() {
  // 移除未使用的文档创建代码,按需保留
  let sheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet1 = sheet.getSheetByName('Sheet 1');
  let sheet2 = sheet.getSheetByName('Sheet 2');
  
  // 先校验工作表是否存在,避免报错
  if (!sheet1 || !sheet2) {
    throw new Error("未找到指定工作表,请检查名称拼写");
  }
  
  // 获取源单元格公式并写入目标单元格
  const sourceFormula = sheet1.getRange(1, 1).getFormula();
  sheet2.getRange(1, 1).setFormula(sourceFormula);
}

方法2:直接复制单元格(含公式和格式)

用copyTo方法一键复制单元格的所有内容,更简单:

function myFunction() {
  let sheet = SpreadsheetApp.getActiveSpreadsheet();
  let sheet1 = sheet.getSheetByName('Sheet 1');
  let sheet2 = sheet.getSheetByName('Sheet 2');
  
  if (!sheet1 || !sheet2) {
    throw new Error("未找到指定工作表,请检查名称拼写");
  }
  
  // 复制源单元格到目标位置
  sheet1.getRange(1, 1).copyTo(sheet2.getRange(1, 1));
}

补充说明

  • 原代码里DocumentApp.create("QR Holder")创建了文档但没用到,可根据你的需求决定保留或删除。
  • 若只想复制公式不复制格式,可给copyTo加参数:sheet1.getRange(1,1).copyTo(sheet2.getRange(1,1), SpreadsheetApp.CopyPasteType.PASTE_FORMULA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:57:32