google-apps-script - 带有邀请和编辑活动的 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
解决方案
试试这个:
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});
}
});
参考:
推荐阅读
- javascript - 将 Select2 动态添加到 Row
- c++ - 如何从 C++ 中的不同类正确引用类的对象?
- c - 使同一本地机器上的多个进程使用 C 套接字相互通信
- angularjs - 可以合理地使用 PubSub 来模拟双向绑定吗?
- sql - 查找没有对应记录且末尾有扩展名的记录
- mysql - 使用 UPDATE 将行标记为“已使用”
- react-native - asyc/await + babel + react-native 的问题
- r - 比较日期时间值时提高循环启动速度
- c# - 在 Azure Blob 存储上创建文件副本
- r - 是否可以将大 .rds 或 .feather 文件的子集导入 R?