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

Apex调用Google Calendar API时日期过滤条件不生效问题

Google Calendar API 日期范围过滤不生效Apex原生解决方案

问题根因

你当前调用的API地址存在格式错误,导致查询参数未被Google服务正确识别:

  • 接口路径/events和第一个查询参数之间应该使用?分隔,你当前使用了&(HTML转义后为&)作为分隔符,所有过滤参数都未生效。
  • 若未对参数做URL编码,时间格式里的特殊字符也可能导致参数解析失败。

原生Apex实现方案(无第三方依赖)

1. 正确拼接请求URL

按照Google Calendar API规范构造请求地址,所有查询参数使用Apex原生EncodingUtil做URL编码,示例代码如下:

// 1. 定义查询范围与时区
String targetTimeZone = 'America/Los_Angeles';
DateTime startTime = DateTime.newInstance(2021, 10, 25, 10, 0, 0);
DateTime endTime = DateTime.newInstance(2021, 10, 28, 10, 0, 0);

// 2. 格式化时间为RFC3339标准格式并编码
String encodedTimeMin = EncodingUtil.urlEncode(
    startTime.format('yyyy-MM-dd\'T\'HH:mm:ssXXX', targetTimeZone),
    'UTF-8'
);
String encodedTimeMax = EncodingUtil.urlEncode(
    endTime.format('yyyy-MM-dd\'T\'HH:mm:ssXXX', targetTimeZone),
    'UTF-8'
);
String encodedTimeZone = EncodingUtil.urlEncode(targetTimeZone, 'UTF-8');

// 3. 构造完整请求端点,注意路径后用?接第一个参数
String endpoint = 'https://www.googleapis.com/calendar/v3/calendars/primary/events' +
    '?timeMin=' + encodedTimeMin +
    '&timeMax=' + encodedTimeMax +
    '&timeZone=' + encodedTimeZone;

// 4. 发送请求,替换为你实际获取的OAuth2访问令牌
HttpRequest req = new HttpRequest();
req.setEndpoint(endpoint);
req.setMethod('GET');
req.setHeader('Authorization', 'Bearer ' + yourValidAccessToken);
req.setHeader('Accept', 'application/json');

Http http = new Http();
HttpResponse resp = http.send(req);

// 5. 解析返回结果
if (resp.getStatusCode() == 200) {
    Map<String, Object> respData = (Map<String, Object>) JSON.deserializeUntyped(resp.getBody());
    List<Object> filteredEvents = (List<Object>) respData.get('items');
    // 此处添加你的业务处理逻辑
}

注意事项

  • 确保你的OAuth访问令牌已申请https://www.googleapis.com/auth/calendar.readonly或更高的日历访问权限,否则可能返回全量数据或权限报错。
  • 不要直接使用从HTML中复制的转义后链接,需要将所有&amp;替换为原生&作为参数分隔符。
  • 若需要过滤重复日程,可以额外添加singleEvents=true参数,将循环日程展开为单个日程后再按时间过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:06:00