如何编写Google Sheets脚本实现下拉选胜者后复制对应球队图片
Google Sheets 自动插入球队图片脚本方案
核心逻辑
当你在Week _开头的工作表中通过下拉菜单选中球队后,脚本会自动在Teams工作表中查找该球队名(E-I列),找到对应行后,将该行A列的图片复制到你选择球队的单元格中。
完整脚本代码
打开你的Google Sheets工作簿,点击「扩展程序」→「Apps Script」,清空默认代码,粘贴以下内容:
function onEdit(e) { // 获取编辑事件的相关信息 const range = e.range; const sheet = range.getSheet(); const selectedTeam = e.value; // 仅处理以"Week "开头的工作表,且编辑的单元格有值 if (!sheet.getName().startsWith("Week ") || !selectedTeam) return; // 定位Teams工作表 const teamsSheet = e.source.getSheetByName("Teams"); if (!teamsSheet) { SpreadsheetApp.getUi().alert("未找到名为'Teams'的工作表!"); return; } // 查找Teams表中E-I列包含选中球队名的行 const searchRange = teamsSheet.getRange("E:I"); const values = searchRange.getValues(); let targetRow = -1; for (let i = 0; i < values.length; i++) { if (values[i].includes(selectedTeam)) { targetRow = i + 1; // 转换为实际行号(数组从0开始,行号从1开始) break; } } if (targetRow === -1) { SpreadsheetApp.getUi().alert(`未找到球队'${selectedTeam}'的信息!`); return; } // 获取目标行A列的图片 const targetCell = teamsSheet.getRange(targetRow, 1); const images = targetCell.getImages(); if (images.length === 0) { SpreadsheetApp.getUi().alert(`球队'${selectedTeam}'对应的行没有图片!`); return; } // 先清除当前单元格已有的图片 const existingImages = range.getImages(); existingImages.forEach(img => img.remove()); // 复制图片到当前单元格 const newImage = images[0].copyTo(range); // 设置图片适应单元格大小 newImage.setAnchorCell(range); newImage.setScaleToFit(true); }
设置说明
- 下拉菜单配置:确保
Week _工作表中选胜者的单元格已设置数据验证下拉菜单,选项和Teams表E-I列的球队名完全一致(大小写、空格都要匹配)。 - 权限授权:首次运行或修改脚本后,需授权脚本访问你的Google Sheets数据,按提示完成即可。
- 图片格式:
Teams表A列的图片要插入到单元格内(而非浮在单元格上方),脚本才能正确获取。
注意事项
- 脚本会在你编辑单元格时自动触发,无需手动运行。
- 若同一球队名在
Teams表E-I列多次出现,脚本只会取第一次出现的对应行图片。 - 清空单元格内容时,脚本不会执行任何操作。
内容的提问来源于stack exchange,提问作者Dallas Morrow
相关产品推荐
相关产品推荐

