首页 > 解决方案 > 带有邀请和编辑活动的 Google 工作表到日历

问题描述

场景:我希望几个用户将标题日期、描述等添加到日历中,以用于他们通过 google meet 举行的讨论活动。这应该由谷歌表上的触发器处理。如果在 google sheet 中编辑了一个事件,那么日历中的事件也应该被编辑。我找到了一些代码,稍微编辑了一下,它有点工作。

什么有效:创建了活动并邀请了客人,因此创建了谷歌会议(只要邀请了 1 位客人)。编辑事件也有效

什么不起作用:如果 2 个事件的时间发生冲突,例如,事件 1 从 14:00 - 15:00 运行,事件 2 从 14:30 - 15:30 运行,则仅将事件 2 添加到日历中。

任何人都可以帮助如何启用添加重叠事件吗?

function create_calendar() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var index = 2;
var lastRow = sheet.getLastRow();

for (;index <= lastRow; index++){
  
  var taskTitle = sheet.getRange(index, 1, 1, 1).getValue();
  var taskDesc = sheet.getRange(index, 2, 1, 1).getValue();
  var location = sheet.getRange(index, 3, 1, 1).getValue();
  var startDate = sheet.getRange(index, 4, 1, 1).getValue();
  var endDate = sheet.getRange(index, 5, 1, 1).getValue();
  var guests = sheet.getRange(index, 6, 1, 1).getValue();
  
  var type = sheet.getRange(index, 7, 1, 1).getValue();
  var onCalendar = sheet.getRange(index, 8, 1, 1).getValue();
  var status = sheet.getRange(index, 9, 1, 1).getValue();
  
  var sendInvites = true;
  if (onCalendar == 'Yes' && startDate && endDate && status != 'Done')
  {
    var events =  CalendarApp.getCalendarById("INSERT CALENDAR ID HERE").getEvents(startDate, endDate);
    delete_events(events);
    var calendar = CalendarApp.getCalendarById("INSERT CALENDAR ID HERE").createEvent(taskTitle, 
                                                                                      startDate, 
                                                                                      endDate,
                                                                                      {description: taskDesc, 
                                                                                        location: location, 
                                                                                        guests: guests, 
                                                                                        sendInvites: sendInvites}
                                                                                      );

  }
    
}// End of for Loop
  
}// End of CalendarTest Function


标签: google-apps-scriptgoogle-sheets

解决方案


试试这个:

const ss=SpreadsheetApp.getActive();
const sheet=ss.getSheetByName('Events');
const startRow=1;
let vA=sheet.getRange(startRow,1,sheet.getLastRow()-startRow+1,9).getValues();
vA.forEach(function(r,i){
  var taskTitle = r[0];
  var taskDesc =r[1]; 
  var location =r[2];
  var startDate =r[3];
  var endDate =r[4];
  var guests =r[5];
  var type =r[6];
  var onCalendar =r[7];
  var status =r[8];
  var sendInvites = true;
  if (onCalendar=='Yes' && startDate && endDate && status != 'Done')
  {
    CalendarApp.getCalendarById("INSERT CALENDAR ID HERE").createEvent(taskTitle, startDate, endDate,{description:taskDesc,location:location,guests:guests,sendInvites:sendInvites});
  }
});

参考:


推荐阅读