求助Google Sheets Apps Script:按条件替换列值并设置快捷键
Google Sheets Apps Script 实现需求方案
一、自动触发替换:当S列值变为'Review'时更新L列
下面的脚本会在你编辑S列单元格并将其设为'Review'时,自动遍历所有S列为'Review'的行,用对应行W列的值替换L列内容:
function onEdit(e) { const editedCell = e.range; const sheet = editedCell.getSheet(); // 仅处理S列(第19列)值变为'Review'的情况 if (editedCell.getColumn() === 19 && editedCell.getValue() === 'Review') { const dataRange = sheet.getDataRange(); const values = dataRange.getValues(); // 遍历数据行(跳过第1行表头) for (let i = 1; i < values.length; i++) { // 检查当前行S列是否为'Review' if (values[i][18] === 'Review') { // 将W列(索引22)的值写入L列(第12列) sheet.getRange(i + 1, 12).setValue(values[i][22]); } } } }
使用说明:
- 打开你的Google表格,点击「扩展程序」→「Apps脚本」
- 将上述代码粘贴到脚本编辑器中,保存项目(随便起个名字即可)
- 返回表格,编辑S列单元格为'Review',脚本会自动执行更新
二、设置手动执行快捷键
如果你需要手动触发更新操作(而非自动),可以用下面的独立函数并设置快捷键:
1. 手动执行脚本
function updateLColumn() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const dataRange = sheet.getDataRange(); const values = dataRange.getValues(); for (let i = 1; i < values.length; i++) { if (values[i][18] === 'Review') { sheet.getRange(i + 1, 12).setValue(values[i][22]); } } }
2. 设置快捷键步骤:
- 保存上述函数后,返回Google表格
- 点击「扩展程序」→「自定义功能」→「分配快捷键」
- 在弹窗中找到
updateLColumn函数,设置你偏好的快捷键(比如Ctrl+Shift+R),点击「保存」即可
注意事项:
- 自动触发的
onEdit是简单触发器,有执行时间限制(最长30秒),如果表格数据量极大,建议改用可安装触发器(需要授权) - 代码默认表头在第1行,若你的数据从其他行开始,需要调整循环的
i起始值 - 快捷键仅在当前表格中生效,且需要你拥有表格的编辑权限
内容的提问来源于stack exchange,提问作者hoffCA
相关产品推荐
相关产品推荐

