如何让Google Sheet编辑单元格时自动更新全表匹配的对应单元格值
该需求完全可实现,使用Google Sheet内置的Google Apps Script即可完成,具体操作步骤如下:
操作步骤
1. 进入脚本编辑器
打开目标Google Sheet,点击顶部菜单栏「扩展程序」>「Apps 脚本」,进入脚本编辑界面,删除页面默认生成的myFunction模板代码。
2. 粘贴同步脚本
将以下代码粘贴到编辑器中:
// 编辑触发函数,无需手动调用,修改表格时自动运行 function onEdit(e) { // 配置项:按你的表格实际情况修改 const ITEM_COLUMN = 0; // 条目名称所在列,A列=0,B列=1,以此类推 const TARGET_COLUMN = 1; // 需要同步的数值列,示例里成本在B列所以填1 // 获取当前编辑的单元格信息 const editedRange = e.range; const editedCol = editedRange.getColumn() - 1; // 转成0基索引 // 仅当编辑的是需要同步的目标列时才触发逻辑 if (editedCol !== TARGET_COLUMN) return; // 获取当前编辑行对应的条目名称和新的数值 const editedRow = editedRange.getRow(); const itemName = editedRange.getSheet().getRange(editedRow, ITEM_COLUMN + 1).getValue(); const newValue = e.value; if (!itemName) return; // 遍历当前表格的所有工作表 const allSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); allSheets.forEach(sheet => { // 如需排除特定工作表,取消注释下一行并替换为实际表名即可 // if(sheet.getName() === "不需要同步的表名") return; // 获取当前工作表的所有数据 const data = sheet.getDataRange().getValues(); // 遍历所有行,找到同名条目更新数值 for (let i = 0; i < data.length; i++) { if (data[i][ITEM_COLUMN] === itemName) { sheet.getRange(i + 1, TARGET_COLUMN + 1).setValue(newValue); } } }); }
3. 适配你的表格规则
修改代码开头的两个配置参数即可匹配你的表格结构:
ITEM_COLUMN:条目名称所在的列,从左到右从0开始计数,比如条目在A列填0、在C列填2TARGET_COLUMN:需要同步的数值列,比如示例中的成本在B列填1
4. 保存授权启用
点击编辑器顶部的保存按钮,为项目自定义命名后,按提示完成账号授权即可生效。首次授权遇到「Google未验证此应用」提示时,点击「高级」>「前往[你的项目名]」即可完成授权,脚本仅在当前表格内运行,无数据外泄风险。
功能验证
按你给出的示例场景:修改任意一个Apples对应的成本为50$后,全表所有工作表的Apples对应成本都会自动同步为50$,反向修改任意一条同条目数据都会触发全量同步,无需额外操作。
内容的提问来源于stack exchange,提问作者Donald Clark-Charest
相关产品推荐
相关产品推荐

