繁体   English   中英

如何使用Google Apps脚本删除活动并发送电子邮件

[英]How to delete an event with google apps script and sending an Email

 function modifyevent(eventid,cal){
  var event = cal.getEventById(eventid);
  event.deleteEvent();
 }

这是有效但不发送电子邮件。 您是否有另一种方法可以使用GOOGLE应用脚本执行此操作 我想删除该活动并向与会者发送电子邮件,即使他们使用Outlook等日历,也会从其日历中删除该活动。

这是我创建事件的方式,如果它可以帮助:

function createEvent(date,start,end,summary,location,email,calendarId,incrementligne,ss){  
var newdatestart = new Date(date.getYear(), date.getMonth(), date.getDate(), start.getHours(), start.getMinutes(), "0", "0");
var newdateend = new Date(date.getYear(), date.getMonth(), date.getDate(), end.getHours(), end.getMinutes(), "0", "0");    
var invitelist = email.split(',');
var longueur = invitelist.length;
var event = {
summary:summary,
location: location,
description: '',
start: {dateTime: newdatestart.toISOString()},
end: {dateTime: newdateend.toISOString()},
attendees: [
{email: ''},{email: ''}],
// Red background. Use Calendar.Colors.get() for the full list.
colorId: 11
};
for(var i=0; i < invitelist.length;i++){
event.attendees.push({email: invitelist[i]});
}

在脚本编辑器中,转到“查看” - “显示清单文件”。 在'appscript.json'中,添加以下范围:

 "oauthScopes": ["https://www.googleapis.com/auth/calendar",             
   "https://www.googleapis.com/auth/script.external_request"]

转到“资源 - >'云平台项目'。 单击您的项目名称以在GCP上打开项目页面。 在页面顶部的搜索框中输入“日历API”。 点击日历API页面上的“启用”。

最后,使用UrlFetchApp调用Calendar API端点。 需要注意的一点是,您需要修改CalendarEvent.getId()返回的字符串,以获取没有“@ google.com”部分的实际标识符。 我已经测试了下面的代码 - 一切都很完美,包括通知。

 function deleteEvent(eventId) {

 var baseUrl = "https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events/{eventId}?sendNotifications=true";
 var calendarId = CalendarApp.getDefaultCalendar().getId();
 eventId = eventId.substr(0, eventId.indexOf("@"));

 var url = baseUrl.replace("{calendarId}", calendarId).replace("{eventId}", eventId);

  var options = {

    "method": "DELETE",
    "headers": {"Authorization":"Bearer " + ScriptApp.getOAuthToken()},
    "muteHttpExceptions": true

  };

  var res = UrlFetchApp.fetch(url, options).getContentText();  
  Logger.log(res);    


}

您可以使用GmailApp.sendEmail(String,String,String)方法 (或MailApp.sendEmail(String,String,String)方法 ,具体取决于您的需要),例如:

function modifyevent(eventid,cal){
  var event = cal.getEventById(eventid);
  var name = event.getTitle();
  event.deleteEvent();
  GmailApp.sendEmail("mike@example.com", "Event deleted", "The event " + name + " has been deleted on " + now.toString());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM