Google App Script开发:根据星期几写入对应单元格的脚本实现
按星期几切换数据写入单元格的实现方案
嘿,你已经写出能实现需求的代码啦!不过咱们可以把它优化得更简洁易维护,避免一堆重复的else if判断。先给你拆解下思路,再给出优化后的版本:
核心逻辑说明
new Date().getDay()会返回0-6的数字,对应关系是:
- 0 = 周日
- 1 = 周一
- 2 = 周二
- ...
- 6 = 周六
你的需求里周日写S列、周一写T列…周六写Y列,刚好是连续的列,完全可以用映射数组或者列号计算来替代重复的条件判断。
优化方案1:用列名映射数组
这种方式直观,看着列名就能对应到星期几,后续调整列只需要修改数组即可:
if (total !== 'error') { // 索引0对应周日(S),1对应周一(T),依次到周六(Y) const columnNames = ['S', 'T', 'U', 'V', 'W', 'X', 'Y']; const dayOfWeek = new Date().getDay(); sh3.getRange(`${columnNames[dayOfWeek]}${counter}`).setValue(total); }
优化方案2:用列号计算(更高效)
Google Apps Script中,getRange(行号, 列号)的调用效率比字符串引用略高一点。S列对应的是第19列,所以我们可以直接计算列号:
if (total !== 'error') { const dayOfWeek = new Date().getDay(); // 周日对应19列(S),每天列号+1,周六对应25列(Y) const targetColumn = 19 + dayOfWeek; sh3.getRange(counter, targetColumn).setValue(total); }
关于你原有代码的说明
你原来写的else if链式判断是完全可以正常工作的,只是当需要调整列或者扩展逻辑时,修改起来会麻烦一些。上面的优化方案能让代码更简洁,也更易维护~
内容的提问来源于stack exchange,提问作者Lorenzo Pimps
相关产品推荐
相关产品推荐

