如何将Google Sheets的IFS函数公式转换为纯Apps Script代码
Google Sheets 单元格联动自动赋值实现方案
基础逻辑演示(对应你提到的A1修改后B1自动赋值)
以下代码实现的效果为:修改A1值为var 1时B1自动填入var 2,修改A1值为var 7时B1自动填入var 8,直接写入纯值无公式:
function onEdit(e) { const editedRange = e.range; const currentSheet = editedRange.getSheet(); // 仅响应A1单元格的编辑操作 if (editedRange.getA1Notation() === "A1") { const inputValue = editedRange.getValue(); let outputValue = ""; if (inputValue === "var 1") { outputValue = "var 2"; } else if (inputValue === "var 7") { outputValue = "var 8"; } // 直接写入值到B1单元格 currentSheet.getRange("B1").setValue(outputValue); } }
适配你原有IFS规则的完整代码
你录制宏里的IFS判断逻辑可以整理为映射表结构,后续修改规则只需调整映射表即可,无需修改逻辑代码:
function onEdit(e) { // 映射规则:键为A列输入值,值为B列要写入的结果,可自行增删 const ruleMap = { "Owner Withdrawal": "Dividends", "Supplies": "Expenses", "Services": "Expenses", "Cash": "Assets", "Equipment": "Assets", "Accounts Payable": "Liabilities", "Owner Equity": "Equity", "Retained Earnings": "Equity", "Revenue": "Revenue", "Accounts Receivable": "Revenue" }; const editedRange = e.range; // 仅监听A列(列号为1)的编辑操作,可自行调整监听列 if (editedRange.getColumn() === 1) { const inputVal = editedRange.getValue(); const resultVal = ruleMap[inputVal] || ""; // 写入当前编辑行的B列(同行右移1列) editedRange.offset(0, 1).setValue(resultVal); } }
使用说明
onEdit是Google Apps Script内置的简单触发器,代码粘贴保存后,只要编辑表格内容就会自动触发运行,无需手动执行- 代码直接将计算结果写入单元格,不会插入任何公式,单元格内为纯文本内容
- 如需调整监听范围,比如改为监听B列编辑后赋值到C列,只需将
editedRange.getColumn() === 1中的1改为2即可
内容的提问来源于stack exchange,提问作者Galen Farrel
相关产品推荐
相关产品推荐

