使用 Google Apps 脚本修改 Google 日历活动中的忙/闲状态不起作用

问题描述 投票:0回答:1

我正在尝试将某些事件的“主”日历中事件的可见性详细信息从“忙碌”更改为“空闲”...这不会失败,但不起作用。

**重新创建:**

  1. 在您的日历中,创建一个活动(即会议),其可见性详细信息显示为“忙碌”。
  2. 使用该函数创建一个独立的脚本并播放。

这将获得一天的活动,并将尝试将“忙碌”更改为“空闲”。

function test(){
  var calendar = CalendarApp.getDefaultCalendar();
  var startTime = new Date();
  var endTime = new Date();
  endTime.setDate(endTime.getDate() + 1);

  var events = calendar.getEvents(startTime, endTime);

  // Itera sobre cada evento encontrado.
  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var eventTitle = event.getTitle();
    var eventType = event.getEventType()
    var calendarId = calendar.getId();
    var eventIdOriginal = event.getId();
    var eventId = eventIdOriginal.replace("@google.com","");      
    let originalEvent = Calendar.Events.get(calendarId, eventId);

    //1. first try
    originalEvent.transparency = "transparent";

    //2. second try
    var changes = { transparency: "transparent" };
    try{
      //Calendar.Events.update(originalEvent, calendarId, eventId,changes);
      Calendar.Events.patch(changes,calendarId, eventId);
    }catch(e){
      Logger.log(e);
    }
  }

}

这不会产生任何异常,但这不起作用。活动继续像“忙碌”一样。

Google 日历活动的可见性详细信息

我想要这个,因为我想自定义我的可用时间以将我的日历分享给其他团队。

我尝试更改其他属性,例如颜色,效果很好。

你能帮我吗?

我需要将可见性详细信息从忙碌更改为空闲。就这样了。

我使用的是企业帐户。

google-apps-script google-calendar-api
1个回答
0
投票

据我了解,您想要做的是将主日历中已创建的事件的状态从

Busy
更改为
Free

这是代码的修改版本,可帮助您开始实现您想要的目标:

function test() {
  var calendar = CalendarApp.getDefaultCalendar();
  var calendarId = calendar.getId();
  var startTime = new Date();
  startTime.setHours(0, 0, 0, 0);
  var endTime = new Date();
  endTime.setHours(23, 59, 59, 999);
  var events = calendar.getEvents(startTime, endTime);
  var event = events.map(e => e.getId().replace("@google.com", ""));
  var changes = {
    transparency: "transparent"
  };
  event.forEach(id => {
    Calendar.Events.patch(changes, calendarId, id);
  });
}

注意:脚本将所有事件的状态从

Busy
更改为
Free
。如果您想在第一个事件中执行此操作,您可以使用:

function test() {
  var calendar = CalendarApp.getDefaultCalendar();
  var calendarId = calendar.getId();
  var startTime = new Date();
  startTime.setHours(0, 0, 0, 0);
  var endTime = new Date();
  endTime.setHours(23, 59, 59, 999);
  var events = calendar.getEvents(startTime, endTime);
  var event = events.map(e => e.getId().replace("@google.com", ""));
  var changes = {
    transparency: "transparent"
  };
  Calendar.Events.patch(changes, calendarId, event[0]);
}
© www.soinside.com 2019 - 2024. All rights reserved.