google-apps-script - 在 Apps 脚本中获取日历事件日期时出现类型错误:“尝试“getStartTime()”时出现类型错误”
问题描述
我正在编写一个脚本来修改选择的 Google 日历事件,方法是将它们的开始和结束日期/时间设置为今天。但是,每次尝试获取日历事件的日期或时间时,我都会因为类型错误而卡住 - 例如使用“ event.getTime() ”,这会导致“ TypeError: Cannot find function getStartTime in object "(参见我的示例代码的第 19 行)。
我已启用日历 API 和 Google Apps API,并已授权脚本修改我的日历。
我选择和检索相关日历事件的代码工作正常。然而,基于错误文本,我显然没有将事件作为对象,我无法确定我需要更正的内容。我花了 2-3 天的大部分时间来搜索 Stack Overflow(例如这篇文章和这篇文章)、Apps 脚本文档、API 参考以及许多其他相关资源以获取解决方案或示例,并尝试所有“get”的变体我能找到,但无济于事。
我对 Apps Script 完全陌生,因此我们将不胜感激任何帮助。
function FloatEvents() {
var calName = "AAAAAAA"; //The name of the calendar to modify
var calID = CalendarApp.getCalendarsByName(calName)[0].getId();
var fromDate = new Date(Date.now() - 7*1000*3600*24); //Start of the time range with events to be handled
var untilDate = new Date(Date.now() + 1*1000*3600*24); //End of the time range with events to be handled
var optionalArgs = {
timeMin: fromDate.toISOString(),
timeMax: untilDate.toISOString(),
showDeleted: false,
singleEvents: true,
orderBy: 'startTime'
};
var service = Calendar.Events;
var response = Calendar.Events.list(calID, optionalArgs);
var events = response.items;
// ----- Loop thru period's events -----
for (i = 0; i < events.length; i++) {
Logger.log(events[i].getStartTime()); // <=== THIS RESULTS IN A "TypeError: Cannot find function getStartTime in object" ERROR
// ----- Process event -----
// Event update code goes here
// Will work on this once I solve the dates problem
}
}
解决方案
虽然您是通过 CalendarApp 获取日历 ID,但您正在使用日历 API 来检索日历事件,该事件返回一个事件数组(每个事件都是一个 JSON 对象)。要获取每个事件的开始和结束时间,您必须在循环中访问它们start
和属性:end
for (i = 0; i < events.length; i++) {
var startTime = events[i].start.dateTime;
var endTime = events[i].end.dateTime;
console.log(startTime);
console.log(endTime);
}
您可以在开始编码之前尝试使用API检查将要检索的内容,以便了解要使用的数据的结构。
但是,如果您想使用 CalendarApp 服务而不是 Calendar API,则必须调用getEvents函数,该函数返回一个 CalendarEvent 数组。这些对象确实具有getStartTime函数。
推荐阅读
- html - 目录路径背景设置不起作用
- php - 在php中将一维数组转换为多维数组
- imagemagick - Image magick (windows) - 如何为文件夹中的多个图像类型执行批量调整大小?
- react-native - 底部导航不适用于 react-native
- javascript - 具有多个和可选字段的猫鼬查找
- java - 使用 ListView 时如何删除 SQLite 中的重复项
- javascript - 变量“名称”不返回未定义
- css - 在客户端编译 scss 以保存在网络上
- python - 将 Python IDE 连接到 Google Cloud
- docker - 使用 Ansible 启动多个 Docker 容器