Google Apps Script转换求助:待办列表重置按钮功能修复
脚本转换求助:待办列表重置按钮无法清除已完成任务内容
背景
两年前我曾借助脚本实现了复杂销售追踪器的重置按钮功能,原方案十分实用。之后我将该脚本修改后应用到多个项目中,但当前新项目遇到了瓶颈,恳请协助转换脚本!我已钻研一个多月,尝试多种方法均未奏效,希望能了解转换中的问题所在及原因,以便后续学习。
需求说明
我为新职位创建了待办列表仪表盘,包含4个待办列表及一个汇总框。现需为**个人待办列表(范围I4:K26)**编写重置按钮脚本,要求:
- 清除已完成任务的内容(不删除行或保留原有格式)
- 按截止日期、名称排序
当前进展
重置按钮可按预期排序,但无法清除已完成任务的内容。
示例表格
提供了包含待办列表结构与测试数据的示例表格。
原可用脚本
//The one that worked! function ResetCompletedOnly() { var sh=SpreadsheetApp.getActive().getSheetByName('SALES: RESET 2020'); var rg=sh.getRange('B19:T104'); var vA=rg.getValues(); var vF=rg.getFormulas(); for(var i=0;i<vA.length;i++) { if(vA[i][9]==1){//column K for(var j=0;j<vA[i].length;j++) { if(!vF[i][j]) { sh.getRange(i+19,j+2).setValue(''); } } } } rg.sort({column:3,ascending:true});//column C the column number is not relative to the range. }
我的尝试脚本
//Testing something new.. function ResetClearContents() { var sh = SpreadsheetApp .getActive() .getSheetByName("ResetToDo"); var rg=sh.getRange('I4:K26'); var vA=rg.getValues(); var vF=rg.getFormulas(); for(var i=0;i<vA.length;i++) { if(vA[i][3]==1){//column K based on range I4:K26 for(var j=0;j<vA[i].length;j++) { if(!vF[i][j]) { sh.getRange(i+4,j+9).clearContent(); } } } } rg.sort([{column:11,ascending:true},{column:9,ascending:true},{column:10,ascending:true}]);//column I the column number is not relative to the range. }
效果对比
- 脚本运行前效果:

- 预期效果:

- 当前实际效果:

附加问题
Google Sheets更新后,数据验证下拉框在有数据时会显示固定背景色(示例表格K30:K41范围可见),如何设置为透明以显示交替行颜色?
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

