【发布时间】:2016-08-31 20:30:53
【问题描述】:
我正在从客户那里获取不适用日期信息,需要在谷歌日历上标记它们。
客户只需检查表单上的假期,并需要在他们的日历上将其突出显示为休息日。
Google 日历脚本似乎没有提供请求公共假期日期的方法。有什么办法吗?
【问题讨论】:
标签: google-apps-script google-calendar-api
我正在从客户那里获取不适用日期信息,需要在谷歌日历上标记它们。
客户只需检查表单上的假期,并需要在他们的日历上将其突出显示为休息日。
Google 日历脚本似乎没有提供请求公共假期日期的方法。有什么办法吗?
【问题讨论】:
标签: google-apps-script google-calendar-api
如何在 App 脚本中使用 Calendar API 获取公共假期
1.根据您想查看的国家/地区的公共假期,获取您的calendarId here。
2.使用fetching list of Events上的App Script docs提供的代码:
function listNext10Events() {
var calendarId = 'en.indian#holiday@group.v.calendar.google.com'; //I'm fetching Indian public holidays
var now = new Date();
var events = Calendar.Events.list(calendarId, {
timeMin: now.toISOString(),
singleEvents: true,
orderBy: 'startTime',
maxResults: 10 //set number of holidays you'd like to see, 10 for now
});
if (events.items && events.items.length > 0) {
for (var i = 0; i < events.items.length; i++) {
var event = events.items[i];
if (event.start.date) {
// All-day event.
var start = parseDate(event.start.date);
Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
} else {
var start = parseDate(event.start.dateTime);
Logger.log('%s (%s)', event.summary, start.toLocaleString());
}
}
} else {
Logger.log('No events found.');
}
}
function parseDate(string) {
var parts = string.split('T');
parts[0] = parts[0].replace(/-/g, '/');
return new Date(parts.join(' '));
}
要使用高级 Google 服务,请按照以下说明操作:
一个。在脚本编辑器中,选择资源 > 高级 Google 服务...。
b.在出现的对话框中,点击您要使用的服务旁边的开/关开关。
c。在对话框底部,点击 Google Developers Console 的链接。
d。在控制台中,单击过滤器框并输入 API 的部分名称(例如,“日历”),然后在看到名称后单击它。
e。在下一个屏幕上,单击启用 API。
保存项目并运行。
查看日志以查看公共假期。
【讨论】:
var events = Calendar.Events.list(...检索事件的部分。我在执行记录中收到以下错误:Execution failed: Access Not Configured. Calendar API has not been used in project 60727xxxxx8 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/calendar/overview?project=60727xxxxx8 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry
You do not have sufficient permissions to view this page. 。当我切换到公司帐户时,我在其中找不到项目。无论如何,我尝试从公司帐户启用 api,但仍然失败。