【设置动态时间范围-1】傻瓜式google ads script入门教程
上篇文章介绍了如何设置自定义时间,本篇介绍如何设置动态时间
动态时间
这里先理解下什么叫动态时间,我们平时常说的"过去30天",“过去14天”就是动态时间,以当日或者过去的某天为基准,再往前追溯到某个时间,这中间的时间范围就是动态时间
在官方给出的时间中,只有过去14天,过去7天,过去30天,如果我们想要“过去15天”,“过去45天”的动态时间要怎么做呢?接下来我们开始设置:
我们先定义一下想要的时间范围,比如过去21天到今天的动态时间范围
//定义21天前(startperiod)和今天的变量(endperiod)
let startperiod = 21
let endperiod = 0
因为是动态,我们也要想办法拿到账号所处的当下时间,以便后面做动态设置
//定义一个javascript的时间对象
now = new Date()
//拿到账户当前所在的标准时间
let timeZone = AdsApp.currentAccount().getTimeZone()
既然要拿到21日前的时间,那需要处理的过程就是:
当前日期(今天)-21天
那如何拿到当前时间呢?使用时间类自带的方法getTime(),以下为代码,我们打印下看看:
now.getTime()
执行结果

等等?为啥这个数据这么奇怪?
是因为这里返回的是一个没有经过任何格式处理的long类型的毫秒数,需要我们后续处理一遍格式才能得到我们想要的时间格式。
这里我们再用js的date对象处理一下:
let nowtime = new Date(now.getTime())
Logger.log(nowtime)
返回了一个完整的日期时间字符串:

但这个依然不是我们想要的日期格式,需要再处理一下变成"yyyyMMdd"格式:
//这里就需要用到我们之前的'timeZone','nowtime'变量了
let formatday = Utilities.formatDate(nowtime, timeZone, 'yyyyMMdd')
logger.log(formatday)
这就是我们想要的日期格式:

接下来我们想要获取过去第21天的日期,要怎么做呢:
直接在获取long类型毫秒数的时候让两数相减即可:
//这里我们设置一个日维度单位的毫秒数变量
let MILLIS_DAY_UNITS = 1000 * 60 * 60 * 24
//然后我们使用之前的变量设置21天的毫秒数
let beforeday_microsecond = startperiod*MILLIS_DAY_UNITS
//开始让两数相减并规范日期
let from = new Date(now.getTime() - beforeday_microsecond)
let fromday = Utilities.formatDate(from, timeZone, 'yyyyMMdd')
Logger.log(fromday)
然后我们就拿到规定格式的前面第21天的日期:

以下为分别获取今日和前面第21天的完整代码:
let MILLIS_DAY_UNITS = 1000 * 60 * 60 * 24
let startperiod = 21
let endperiod = 0
let beforeday_microsecond = startperiod*MILLIS_DAY_UNITS
let endday_microsecond = endperiod*MILLIS_DAY_UNITS
let from = new Date(now.getTime() - beforeday_microsecond)
let fromday = Utilities.formatDate(from, timeZone, 'yyyyMMdd')
let end = new Date(now.getTime() - endday_microsecond)
let endday = Utilities.formatDate(end, timeZone, 'yyyyMMdd')
Logger.log(fromday)
Logger.log(endday)
最终执行结果

接下来把这些日期输入到我们获取数据的函数中即可,比如账户点击数据:
let custom_days = AdsApp.currentAccount().getStatsFor(fromday,endday)
let cost = custom_days.getCost()
这里我们就能得到动态21天的账户点击数据
通过这一系列设置我们就可以自定义我们想要的时间范围来获取需要的数据了。
Comments NOTHING