Google apps script 通过邀请和编辑活动将工作表谷歌到日历
场景:我希望几个用户为他们通过GoogleMeet举办的讨论活动在日历中添加标题、日期、描述等。这一切都应该由谷歌表单上的触发器来处理。如果在google工作表中编辑事件,则日历中的事件也应编辑。 我找到了一些代码,对其进行了轻微的编辑,它在某种程度上起了作用 工作原理:创建活动并邀请客人,因此创建google meet(只要邀请1位客人)。编辑事件也有效 什么不起作用:如果两个事件的时间冲突,例如,事件一从14:00到15:00运行,事件二从14:30到15:30运行,则只有事件二被添加到日历中 有人能帮助我们添加重叠事件吗Google apps script 通过邀请和编辑活动将工作表谷歌到日历,google-apps-script,google-sheets,Google Apps Script,Google Sheets,场景:我希望几个用户为他们通过GoogleMeet举办的讨论活动在日历中添加标题、日期、描述等。这一切都应该由谷歌表单上的触发器来处理。如果在google工作表中编辑事件,则日历中的事件也应编辑。 我找到了一些代码,对其进行了轻微的编辑,它在某种程度上起了作用 工作原理:创建活动并邀请客人,因此创建google meet(只要邀请1位客人)。编辑事件也有效 什么不起作用:如果两个事件的时间冲突,例如,事件一从14:00到15:00运行,事件二从14:30到15:30运行,则只有事件二被添加到日历
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
函数创建日历(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var指数=2;
var lastRow=sheet.getLastRow();
对于(;索引请尝试以下方法:
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});
}
});
参考:
函数ev.deleteEvent()在哪里
defined?进一步考虑一下,我不认为我需要删除功能,因为任何已取消的事件都将被编辑为已取消的事件。我将重新表述我的原始问题,只询问如何使其能够添加重叠事件。我认为这一行是创建重叠事件的问题delete\events(事件);
谢谢Cooper,我现在得到一个异常:参数(字符串,(类),(类))CalendarApp.Calendar.createEvent的方法签名不匹配。但是我知道这是因为代码需要工作表中未提供的内容。这给了我一些需要调查和处理的内容,谢谢您缺少stateDate