Google Sheets按编辑者为单元格着色的onEdit脚本运行异常排查
问题原因
- 条件判断误用赋值运算符
你在if判断中使用了赋值符号=而非比较符号==/===。if (User1 = -1.0)的执行逻辑是直接将User1赋值为-1,赋值表达式的返回值为-1,在JavaScript中非零的数字会被判定为真值,因此两个if判断都会触发执行,后执行的#c9daf8颜色设置会覆盖之前的颜色,所以所有单元格最终都显示同一种颜色。 - 邮箱匹配逻辑写反
String.indexOf()方法匹配到目标字符串时会返回对应下标(你日志中User1返回0就代表匹配到了user1的邮箱),返回-1才代表未匹配到。你当前的逻辑是「未匹配到对应邮箱时设置对应颜色」,和需求完全相反。
修正后代码
function onEdit() { var sheet = SpreadsheetApp.getActiveSheet(); var email = Session.getActiveUser().getEmail(); // 匹配到user1邮箱时设置对应颜色 if (email.indexOf("user1@email.com") !== -1) { sheet.getActiveCell().setBackground('#f4cccc') } // 匹配到user2邮箱时设置对应颜色 else if (email.indexOf("user2@email.com") !== -1) { sheet.getActiveCell().setBackground('#c9daf8') } }
内容的提问来源于stack exchange,提问作者Norbert Farkas
相关产品推荐
相关产品推荐

