You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Ads API查询滚动日期范围 如何将endDate设为昨日

问题根因

代码存在两个核心错误,直接触发API校验失败:

  1. 查询语句中直接写了'endDate',这是固定字符串字面量,没有引用之前定义的endDate变量,API收到的第二个比较值是纯文本"endDate",完全不符合YYYY-MM-DD的日期格式要求
  2. 原有逻辑取的是当前日期,没有实现「取昨日为结束日期」的需求,且直接用toISOString()在非UTC时区下容易出现日期偏移问题
正确实现代码
// 定义固定起始日期
const startDate = '2020-01-01';

// 计算昨日日期,格式化为YYYY-MM-DD
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
// 用en-CA区域配置直接输出YYYY-MM-DD格式,规避UTC时区偏移问题
const endDate = yesterday.toLocaleDateString('en-CA', {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit'
});

// 正确拼接查询条件,通过模板字符串注入实际变量值,不要把变量名写在引号内
const querySegment = `WHERE segments.date BETWEEN '${startDate}' AND '${endDate}'`;
注意事项
  • 如果你的Google Ads账号使用UTC时区,也可以用更简短的写法取昨日日期:const endDate = new Date(Date.now() - 86400000).toISOString().slice(0,10),非UTC时区账号不推荐这种写法,容易出现日期差1天的问题
  • 拼接查询语句时,JS变量必须放在引号外部通过字符串拼接/模板字符串注入,变量名放在引号内只会被识别为普通文本,不会读取变量存储的实际值
  • segments.date的BETWEEN条件要求两个值必须是完全符合YYYY-MM-DD格式的字符串,传入其他格式的文本、数字都会触发校验报错

内容的提问来源于stack exchange,提问作者viovco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 02:24:15