试着了解我是否在这里做错了。
我尝试使用Apps Scripts取消订阅日历,但它不会让我,我收到错误
日历test.user@cadillacfairview.com无法取消订阅。请尝试删除。
代码:
function anotherTest(){
var cal = CalendarApp.getCalendarById('test.user@cadillacfairview.com');
cal.unsubscribeFromCalendar();
}
我不拥有日历,但我确实拥有该日历的权利。
我尝试发布cal.deleteCalendar()
,但它说"行动不允许"。
答案 0 :(得分:1)
我遇到了完全相同的问题。似乎Google Apps脚本日历服务会产生这些错误,因为它正在尝试删除实际日历,而不是仅仅取消订阅。
我的工作解决方案涉及直接使用Google Calendar API。
具体方法是CalendarList: delete
从Google日历侧边栏中删除日历列表中的条目,这与“取消订阅”相同。此外,它不是简单地从列表中“隐藏”它,而是完全删除它。
var calendarList = CalendarApp.getAllCalendars();
for (var i = 0; i < calendarList.length; i++) {
var calendar = calendarList[i];
// calendar.unsubscribeFromCalendar(); // results in "...cannot be unsubscribed from. Try deleting instead"
// calendar.deleteCalendar(); // results in "...Action not allowed"
// use the actual calendar API instead of Calendar service
Logger.log('will remove calendar: ' + calendar.getName());
var url = "https://www.googleapis.com/calendar/v3/users/me/calendarList/" + encodeURIComponent(calendar.getId());
var requestBody = {};
requestBody.headers = { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() };
requestBody.method = 'DELETE';
requestBody.muteHttpExceptions = false;
try {
var response = UrlFetchApp.fetch(url, requestBody);
Logger.log('response: ' + response); // if API call worked, response should be blank
Logger.log('removed calendar: ' + calendar.getName());
} catch(e) {
Logger.log('failed to remove calendar: ' + e.message);
}
}