如何在Google Apps脚本中添加日期≤今日的判断条件?
Google表格投资组合追踪器脚本添加日期条件修改方案
我在Google表格里搭建了一个投资组合追踪器,用于汇总股票的最终持仓量(已调整买卖情况)。当前使用以下Google Apps脚本,需要在if语句中添加额外条件:dt <= today(),但没有编程基础,不知道该如何操作。
原脚本代码
function myPortfolio(tickers, values, types, dates) { var total = [] var sums = {} for(i = 0; i < tickers.length; i++){ var t = tickers[i].toString() var ty = types[i].toString() var dt = dates[i] if(t != "Cash" && ty != "Dividend"){ if(t in sums){ sums[t] += Number(values[i]) } else { sums[t] = Number(values[i]) } } } for(var tickers in sums){ if(sums[tickers]>0){ total.push([tickers, sums[tickers]]) } } return total }
修改后的脚本代码
function myPortfolio(tickers, values, types, dates) { var total = [] var sums = {} // 获取当前日期并清零时分秒,避免时间部分干扰日期比较 var today = new Date(); today.setHours(0, 0, 0, 0); for(i = 0; i < tickers.length; i++){ var t = tickers[i].toString() var ty = types[i].toString() var dt = dates[i] // 统一交易日期格式,确保和当前日期的比较逻辑一致 var transactionDate = new Date(dt); transactionDate.setHours(0, 0, 0, 0); // 追加日期条件:仅统计交易日期不晚于今天的记录 if(t != "Cash" && ty != "Dividend" && transactionDate <= today){ if(t in sums){ sums[t] += Number(values[i]) } else { sums[t] = Number(values[i]) } } } for(var ticker in sums){ if(sums[ticker]>0){ total.push([ticker, sums[ticker]]) } } return total }
修改说明
- 新增当前日期处理:创建
today对象并清零时分秒,确保只对比日期部分,不会因为当天的时间差导致判断偏差。 - 统一交易日期格式:把表格传入的
dt转为标准Date对象并清零时分秒,避免因格式不一致导致的比较错误。 - 追加日期判断条件:在原if语句中加入
transactionDate <= today,实现只统计日期不晚于今日的交易记录。
内容的提问来源于stack exchange,提问作者Piyush D
相关产品推荐
相关产品推荐

