请求修改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_
相关产品推荐
相关产品推荐

