到期日进度条开发求助:实现百分比/状态展示替代小数数值
Google Sheets到期日进度条/状态脚本修复方案
原脚本仅输出原始小数数值,且写入B列而非需求的D列,以下提供两种修改方案:
方案一:显示百分比进度条(带可视化数据条)
修改后脚本会输出百分比格式数值,并添加数据条直观展示进度:
function updateProgress() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var dueDates = sheet.getRange(2, 1, lastRow - 1, 1).getValues(); var progressValues = []; var today = new Date(); for (var i = 0; i < dueDates.length; i++) { var dueDate = new Date(dueDates[i][0]); var timeDiff = dueDate.getTime() - today.getTime(); var daysDiff = Math.ceil(timeDiff / (1000 * 3600 * 24)); // 计算0-1区间的进度值:逾期则为1(100%),30天内按剩余天数占比计算 var progress = daysDiff <= 0 ? 1 : Math.max(0, 1 - (daysDiff / 30)); progressValues.push([progress]); } // 写入D列并设置百分比格式 var targetRange = sheet.getRange(2, 4, progressValues.length, 1); targetRange.setValues(progressValues).setNumberFormat("0%"); // 添加绿色渐变数据条(可选,增强可视化) var rule = SpreadsheetApp.newConditionalFormatRule() .setGradientMinMax() .setMinValue(0) .setMaxValue(1) .setMinColor("#ffffff") .setMaxColor("#4CAF50") .setRanges([targetRange]) .build(); var rules = sheet.getConditionalFormatRules(); rules.push(rule); sheet.setConditionalFormatRules(rules); }
- 进度值转换为0-1的小数,设置百分比格式后自动显示为
XX% - 数据条会随进度占比填充颜色,逾期时满条显示绿色
- 已修正写入目标列为D列(第4列)
方案二:显示状态文本(GOOD/SLIGHTLY GOOD/NOT GOOD)
直接根据剩余天数输出对应状态文本:
function updateProgress() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var dueDates = sheet.getRange(2, 1, lastRow - 1, 1).getValues(); var statusList = []; var today = new Date(); for (var i = 0; i < dueDates.length; i++) { var dueDate = new Date(dueDates[i][0]); var timeDiff = dueDate.getTime() - today.getTime(); var daysDiff = Math.ceil(timeDiff / (1000 * 3600 * 24)); var status; // 可根据需求调整天数阈值 if (daysDiff > 15) { status = "GOOD"; } else if (daysDiff > 0) { status = "SLIGHTLY GOOD"; } else { status = "NOT GOOD"; } statusList.push([status]); } // 写入D列 sheet.getRange(2, 4, statusList.length, 1).setValues(statusList); }
- 剩余天数大于15天显示
GOOD,1-15天显示SLIGHTLY GOOD,逾期或当天显示NOT GOOD - 可自行修改代码中的天数阈值,适配不同需求
内容的提问来源于stack exchange,提问作者Gilbert Norris Frejoles
相关产品推荐
相关产品推荐

