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

如何通过Google Apps Script读取其他谷歌账号的共享Calendar内容

Google Apps Script读取共享日历返回null的解决方法

你遇到的TypeError: Cannot read property 'getName' of null报错,根源是CalendarApp.getCalendarById()没有获取到目标日历实例,可按以下步骤逐一排查:

  • 核对日历ID是否正确
    不要默认使用a2的邮箱作为日历ID,请登录a2账号打开对应日历的设置页面,找到「集成」分类下的「日历ID」字段,复制完整的ID值填入脚本,次级日历的ID通常不是账号邮箱,拼写错误也会导致返回null。
  • 核对共享权限配置
    登录a2账号的日历共享设置,确认a1账号的权限级别至少为「查看所有活动详情」,如果仅设置为「查看空闲/忙碌(隐藏详情)」,API将无法读取日历实体,直接返回null。
  • 先验证网页端访问有效性
    登录a1账号的Google日历网页端,点击左侧「其他日历」→「添加日历」→「订阅日历」,输入上一步获取的日历ID,确认网页端可以正常加载、查看该日历的活动内容,确保共享权限已实际生效。
  • 重置脚本授权
    打开脚本编辑器,进入「项目设置」页面,点击「撤销此应用的访问权限」,之后重新运行脚本,重新完成授权流程,避免旧的授权缓存导致权限不足。同时确认运行脚本时登录的账号确实是a1@gmail.com,没有账号串号问题。

排查完成后可使用以下测试代码验证:

// 替换为从a2日历设置中获取的正确日历ID
const calendarId = "你的正确日历ID";
const calendar = CalendarApp.getCalendarById(calendarId);

if (!calendar) {
  console.log("未获取到目标日历,请重新检查ID和权限配置");
} else {
  console.log("成功获取日历:" + calendar.getName());
  // 测试读取未来7天的日历活动
  const start = new Date();
  const end = new Date(start.getTime() + 7 * 24 * 60 * 60 * 1000);
  const events = calendar.getEvents(start, end);
  console.log("未来7天共有" + events.length + "条活动");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:02