Google工作表双页指定列文本转大写代码失效求助
问题原因及解决方法
问题根源
你的代码存在逻辑漏洞:第一个判断块里,只要当前编辑的不是PDI工作表,就会触发return直接退出函数,后面针对Premium_PDI的代码完全没机会执行,这就是新工作表输入文本不转大写的原因。
优化后的代码
直接替换你当前的onEdit函数即可:
function onEdit(e) { // 定义需要生效的工作表名称 const targetSheets = ['PDI', 'Premium_PDI']; // 定义不需要转大写的列(排除列) const notCols = [1, 8, 9, 14, 16, 17, 19, 20, 21, 28]; const activeSheet = e.source.getActiveSheet(); // 条件判断:不在目标工作表、属于排除列、或是表头行(第一行)时直接退出 if (!targetSheets.includes(activeSheet.getName()) || notCols.indexOf(e.range.columnStart) > -1 || e.range.rowStart < 2) { return; } // 将输入内容转为大写 e.range.setValue(e.value.toUpperCase()); }
代码说明
- 用数组
targetSheets统一管理需要生效的工作表,后续新增工作表直接往数组里追加名称即可 - 只定义一次排除列
notCols,避免重复冗余代码 - 合并判断条件,确保符合要求的编辑操作才会执行转大写逻辑,不会因提前
return导致后续逻辑失效
内容的提问来源于stack exchange,提问作者Mark Sheffield
相关产品推荐
相关产品推荐

