Google Sheet复制公式生成的CellImage报错TypeError,求解决方案
解决Google Sheets复制公式生成图片的脚本问题
错误原因
- 工作表未找到:报错
TypeError: Cannot read properties of null (reading 'getRange')意味着sheet2(或sheet1)是null,也就是你指定的工作表名称和实际表格中的名称不匹配——比如实际表名是Sheet2(无空格),而非Sheet 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
相关产品推荐
相关产品推荐

