Google Sheets App Script:从URL插入图片时设置图片宽度
Google Sheets插入图片统一设置宽度的解决方案
你可以通过SpreadsheetApp.newCellImage()提供的setWidth()方法固定图片宽度,图片会自动按原比例缩放高度,保证清晰显示。以下是适配Message Bird这类非Drive外部图片URL的修改后完整脚本:
function onOpen(e) { let ui = SpreadsheetApp.getUi(); ui.createMenu('🤖 Automation') .addItem('Insert Images', 'insertCellImages') .addToUi(); } function insertCellImages() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const lastRow = sheet.getLastRow(); const targetWidth = 200; // 自定义你需要的标准宽度 const rowHeight = 150; // 对应宽度设置合适行高,保证图片完整显示 // 遍历所有行 for (let row = 1; row <= lastRow; row++) { let url = sheet.getRange(row, 3).getValue(); // Column E(注:此处第3列为C列,若需E列应改为5) if (url && typeof url === 'string' && url.trim() !== "") { let imageRange = sheet.getRange(row, 9); // Column N try { // 创建图片并设置固定宽度 let image = SpreadsheetApp.newCellImage() .setSourceUrl(url) .setWidth(targetWidth) .build(); imageRange.setValue(image); // 设置行高适配图片 sheet.setRowHeight(row, rowHeight); Logger.log("Inserted image in row " + row); } catch (error) { Logger.log("Error in row " + row + ": " + error.toString()); imageRange.setValue(""); } } } SpreadsheetApp.getUi().alert('Image insertion complete!'); }
关键修改说明:
- 添加
setWidth(targetWidth):指定图片标准宽度,图片会按原始宽高比自动计算高度,避免变形 - 添加
sheet.setRowHeight(row, rowHeight):手动设置行高,确保缩放后的图片能完整显示在单元格内 - 可根据需求调整
targetWidth和rowHeight的数值,比如把宽度设为180、行高设为120等
内容的提问来源于stack exchange,提问作者Robin Shaw
相关产品推荐
相关产品推荐

