Javascript 如何使用google apps脚本删除事件并发送电子邮件

Javascript 如何使用google apps脚本删除事件并发送电子邮件,javascript,java,google-apps-script,Javascript,Java,Google Apps Script,这是工作,但不发送电子邮件。您是否有其他方法可以使用谷歌应用程序脚本。我想删除该活动,并向与会者发送一封电子邮件,即使他们使用outlook等日历,也会从他们的日历中删除该活动 以下是我创建事件的方式(如果有帮助): function modifyevent(eventid,cal){ var event = cal.getEventById(eventid); event.deleteEvent(); } 函数createEvent(日期、开始、结束、摘要、位置、电子邮件、日历I

这是工作,但不发送电子邮件。您是否有其他方法可以使用谷歌应用程序脚本。我想删除该活动,并向与会者发送一封电子邮件,即使他们使用outlook等日历,也会从他们的日历中删除该活动

以下是我创建事件的方式(如果有帮助):

 function modifyevent(eventid,cal){
  var event = cal.getEventById(eventid);
  event.deleteEvent();
 }
函数createEvent(日期、开始、结束、摘要、位置、电子邮件、日历ID、递增对齐、ss){
var newdatestart=新日期(Date.getYear(),Date.getMonth(),Date.getDate(),start.getHours(),start.getMinutes(),“0”,“0”);
var newdateend=新日期(Date.getYear(),Date.getMonth(),Date.getDate(),end.getHours(),end.getMinutes(),“0”,“0”);
var invitelist=email.split(',');
var longueur=invitelist.length;
var事件={
总结:总结,
地点:地点,,
说明:“”,
开始:{dateTime:newdatestart.toISOString()},
结束:{dateTime:newdateend.toISOString()},
与会者:[
{电子邮件:'},{电子邮件:'}],
//红色背景。使用Calendar.Colors.get()查看完整列表。
颜色ID:11
};
for(var i=0;i
您可以使用(或,根据您的需要),如:


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

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());
}
转到“资源->”云平台项目。单击项目名称打开GCP上的项目页面。在页面顶部的搜索框中键入“日历API”。单击日历API页面上的“启用”

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

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

谢谢,这是一个很好的方法,但目标不仅是通知与会者该活动已被删除。事实上,当日历API发送通知或我们手动执行该操作时,它还将使用outlook或其他日历的用户从日历中删除该活动。谢谢,无论目标如何,这都是一个很好的方法不仅是通知与会者该活动已被删除。事实上,当日历API发送通知或我们手动发送通知时,它还将使用outlook或其他日历的人的活动从日历中删除。您当时应该在问题中包含更多详细信息。无法判断您是否需要基于Java的so解决方案。说某件事情是噩梦或不起作用不是一个真正的问题。请阅读我只是在编辑中添加详细信息如果问题只是为了发送一封电子邮件,stackoverflow上已经存在很多主题问题是,如果他们使用其他事件,例如Outlook,则不会从他们的日历中删除该事件手动执行此操作。这是我想在google apps脚本中使用的方法:此方法应该可以工作,但我不知道如何在google apps脚本中使用它。我希望这将帮助您理解此问题。@amobox这越来越令人困惑。您认为这比调用event.deleteEvent()更好吗如上例所示?我以为您想从Outlook中删除该事件。调用此API终结点似乎不会以任何方式影响Outlook日历。
 "oauthScopes": ["https://www.googleapis.com/auth/calendar",             
   "https://www.googleapis.com/auth/script.external_request"]
 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);    


}