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

请求修改Google Apps Script以支持复制单元格内嵌图片及数据公式

解决方案:复制公式、值及单元格内嵌图片的Google Apps脚本

原脚本只能处理文本、数值和公式,没法复制那种直接嵌入单元格的图片——就是通过「插入>图片>插入图片到单元格」添加的图,这类图片属于单元格的内嵌对象,得单独处理。下面是修改后的脚本,能同时完成公式、值和内嵌图片的复制:

function copyFormulasValuesAndImages() {
  const rangeA1 = 'C4:D31';
  const sourceSpreadsheet = SpreadsheetApp.openById('1B_tK9FP8q1Cs1Cuqv7xWq5QSsBbRLY-k-nhxUhv4H7k');
  const sourceSheet = sourceSpreadsheet.getSheetByName('Sheet1');
  const sourceRange = sourceSheet.getRange(rangeA1);
  
  const targetSpreadsheet = SpreadsheetApp.getActive();
  const targetSheet = targetSpreadsheet.getSheetByName('Sheet1');
  const targetRange = targetSheet.getRange(rangeA1);

  // 复制公式和值(保留原逻辑)
  const values = sourceRange.getValues();
  sourceRange.getFormulas().forEach((row, rowIndex) => {
    row.forEach((formula, columnIndex) => {
      if (formula) {
        values[rowIndex][columnIndex] = formula;
      }
    });
  });
  targetRange.setValues(values);

  // 复制内嵌到单元格的图片
  const sourceStartRow = sourceRange.getRow();
  const sourceStartCol = sourceRange.getColumn();
  const sourceEndRow = sourceStartRow + sourceRange.getNumRows() - 1;
  const sourceEndCol = sourceStartCol + sourceRange.getNumColumns() - 1;

  // 遍历源工作表所有内嵌图片
  sourceSheet.getImages().forEach(image => {
    const anchorCell = image.getAnchorCell();
    const cellRow = anchorCell.getRow();
    const cellCol = anchorCell.getColumn();

    // 筛选出在目标区域内的图片
    if (cellRow >= sourceStartRow && cellRow <= sourceEndRow && cellCol >= sourceStartCol && cellCol <= sourceEndCol) {
      // 计算图片在源区域内的相对位置
      const relativeRow = cellRow - sourceStartRow + 1;
      const relativeCol = cellCol - sourceStartCol + 1;
      // 获取目标区域对应的单元格
      const targetCell = targetRange.getCell(relativeRow, relativeCol);

      // 复制图片Blob并插入到目标单元格
      const imageBlob = image.getBlob();
      const insertedImage = targetSheet.insertImage(imageBlob, targetCell.getColumn(), targetCell.getRow());
      
      // 同步原图尺寸和锚定设置
      insertedImage.setWidth(image.getWidth());
      insertedImage.setHeight(image.getHeight());
      insertedImage.setAnchorCell(targetCell);
    }
  });
}

关键说明:

  • 保留原脚本的公式/值复制逻辑,确保原有数据正常迁移
  • 通过getImages()获取源工作表的所有内嵌图片,筛选出位于目标区域内的图片
  • 用getAnchorCell()定位图片所在单元格,计算相对位置后匹配到目标单元格
  • 提取图片Blob插入目标单元格,同步原图尺寸和锚定设置,保证显示效果和源表格一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:36:21