Google Sheets JavaScript脚本数组值累加异常问题排查
错误原因分析及修正方案
核心错误1:变量k的作用域错误
你把var k = 0写在了for循环内部,这意味着每次循环都会重新初始化k为0,根本无法实现跨循环的累加效果。比如第一次空单元格加3,循环结束k就被销毁,下一次循环又从0开始加5,自然得不到累加值。
核心错误2:数组元素类型为字符串导致拼接
myMarkRange[i]里的数值是以字符串形式存储的,当你执行k += myMarkRange[i]时,JavaScript会把数字k和字符串做拼接(比如0 + "3"得到"03"),而非数学加法。
额外逻辑错误:else分支的无效操作
else分支里k = myMarkRange[i]; k = 0;完全是多余操作,而且你在else里先log的k是刚初始化的0,根本不是之前累加的总和,不符合需求里“输出k的总和”的要求。
修正后的代码
// 把k放在循环外,保证累加的持续性 let k = 0; for (let i = 2; i < 15; i++) { if (myStoreRange[i] === "") { // 把字符串转成数字再累加 k += Number(myMarkRange[i]); Logger.log(k); } else { // 输出累加的总和 Logger.log(k); mysheet.getRange("H3").setValue(k); // 重置k为0,准备下一轮累加 k = 0; } }
内容的提问来源于stack exchange,提问作者Tias Muesli
相关产品推荐
相关产品推荐

