Google Sheets提交按钮脚本:允许提交值为0的单元格
解决Google Sheets脚本中0被误判为空的问题
你的脚本里,filter(e => e)会把0这类假值直接过滤掉,导致即便是合法的0也会被当成空字段触发错误。只要调整判断逻辑,只排除真正为空的单元格就能解决问题,修改后的脚本如下:
function Jan() { const ss = SpreadsheetApp.getActive(); const fsh = ss.getSheetByName("sheet1"); const dss = SpreadsheetApp.openById(gobj.globals.ssid); const dsh = dss.getSheetByName("sheet2"); const rgl = fsh.getRangeList(["H2","D4","I5","J5","F24","F25","F26","F27","F28"]); // 空单元格标记为null,非空则取实际值 let vs = rgl.getRanges().map(r => r.isBlank() ? null : r.getValue()); // 只过滤掉null,保留0、false等有效值 vs = vs.filter(e => e !== null); if (vs.length == rgl.getRanges().length) { // 用vs.length替代固定17,避免列数不匹配问题 dsh.getRange(dsh.getLastRow() + 1, 1, 1, vs.length).setValues([vs]); } else { throw new Error ("REQUIRED FIELD IS EMPTY"); } }
修改说明:
- 原
map逻辑用rgl做空值标记不合理,改成null更直观 - 过滤条件从
filter(e => e)改为filter(e => e !== null),确保0、布尔值false这类合法值不会被误过滤 - 把
setValues里的固定列数17替换为vs.length,避免后续调整选取单元格数量时出现列数不匹配的错误
内容的提问来源于stack exchange,提问作者JohnnyMelou
相关产品推荐
相关产品推荐

