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

使用Python Google API V3嵌入谷歌日历:获取iframe展示URL问题

解决Google Calendar API创建日历后获取iframe嵌入URL的问题

嘿,我完全懂你现在的头疼事儿——用Python调用Google Calendar API v3创建了新日历,想让用户在浏览器里通过iframe查看,但翻遍了API返回的结果,连那个xxxxxxxxx@group.calendar.google.com格式的日历ID都找不到,甚至cal.calendarList().list().execute()返回的内容也没给你有用的线索对吧?别慌,这事儿其实有明确的解决路径,我给你一步步捋清楚:

1. 先拿到日历ID(关键!)

你通过API创建日历的时候,cal.calendars().insert(body=你的日历配置).execute()这个调用的返回结果里,肯定包含id字段,就是那个你要的xxxxxxxxx@group.calendar.google.com格式的字符串。要是当时没存下来,也可以用cal.calendars().list()来列出所有你有权限的日历,找到你创建的那个,提取它的id就行(别用calendarList().list(),这个是用户手动添加到自己日历列表的,API创建的默认不在里面)。

2. 必须设置公开访问权限

这是很多人踩坑的点——API创建的日历默认是私有状态,别说iframe了,别人连访问都不行。你得用ACL(访问控制列表)API给它加一个公开可读的权限:

# 替换成你的日历ID
CALENDAR_ID = "xxxxxxxxx@group.calendar.google.com"

acl_body = {
    "role": "reader",
    "scope": {
        "type": "default"  # 代表所有用户都能访问
    }
}

# 执行权限添加操作
cal.acl().insert(calendarId=CALENDAR_ID, body=acl_body).execute()

如果你只想让特定用户访问,把scope改成type='user'并加上value='目标邮箱'就行,但如果是要iframe公开展示,用default就对了。

3. 直接构造iframe的嵌入URL

有了日历ID和权限,就不用再找什么API返回的嵌入链接了,直接自己构造就行,格式非常固定:

https://calendar.google.com/calendar/embed?src=你的日历ID

把这个URL放到iframe里就能用了,比如HTML代码可以这么写:

<iframe 
    src="https://calendar.google.com/calendar/embed?src=xxxxxxxxx@group.calendar.google.com"
    style="border: 0"
    width="800"
    height="600"
    frameborder="0"
    scrolling="no"
></iframe>

要是想自定义展示效果,还能加参数:

  • &ctz=Asia/Shanghai:设置时区为上海
  • &mode=week:默认显示周视图(默认是月视图)
  • &showNav=0:隐藏顶部导航栏
  • &showPrint=0:隐藏打印按钮

4. 为啥calendarList().list()没用?

calendarList是用户手动添加到自己Google Calendar网页端列表里的日历集合,你通过API创建的日历默认不会自动加入这个列表。如果想让创建者在网页端看到它,可以调用cal.calendarList().insert(body={'id': CALENDAR_ID}).execute()把它加进去,但这一步对于获取iframe URL完全没必要,只是方便管理而已。

最后提醒一句:设置完权限后,最好先把构造好的URL直接在浏览器里打开测试一下,如果能正常看到日历内容,说明权限没问题,iframe就能正常加载;如果提示无权限,回去检查ACL的role和scope是不是设置对了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:56:06