如何在创建谷歌日历事件的代码中正确引用它



首先,我这辈子从来没有上过编码课,我对谷歌应用程序脚本的了解只有我在这里或他们的参考页面上读过的东西。因此,如果不是令人难以置信的技术性或非常详细的回复,我们将不胜感激。

function scheduleShifts() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var calendarId = spreadsheet.getRange("K1").getValue();
var eventCal = CalendarApp.getCalendarById(calendarId);
var EmpLvl = spreadsheet.getRange("H2").getValue();
var count = spreadsheet.getRange("I1").getValue();
var signups = spreadsheet.getRange(2,2,count,7).getValues();

for (x=0; x<signups.length; x++) {

var shift = signups[x];

var startTime = shift[4];
var endTime = shift[5];
var volunteer = shift[3];


eventCal.createEvent(volunteer, startTime, endTime, {description: "Please make sure your PTO is submitted"}).addEmailReminder(1440).addGuest(spreadsheet.getRange("B2").getValue())
if (EmpLvl == "Partner"){
setColor("11");
}else if (EmpLvl == "Principal"){
setColor("6");
}else if (EmpLvl == "Senior Manager"){
setColor("9");
}else if (EmpLvl == "Manager"){
setColor("1")
}else if (EmpLvl == "Senior"){
setColor("10")
}else if (EmpLvl == "Staff"){
setColor("2")
}else if (EmpLvl == "Intern"){
setColor("5")
}else if (EmpLvl == "Director"){
setColor("7")
}else if (EmpLvl == "Administration"){
setColor("3")
}if (EmpLvl == "Outside Consultant"){
setColor("8")
}
}
spreadsheet.deleteRows(2,count)
spreadsheet.getRange("I1").clearContent();
spreadsheet.getRange("I1").setFormula("=COUNT($A$1:$A$1103)")
}

谷歌参考表

应用程序脚本代码w/错误

到目前为止,我所创建的基本上是从链接到谷歌表单(GF(的谷歌表单(GS(中的信息在谷歌日历(GC(中创建事件的代码。过程如下。

  1. 用户填写GF
  2. 信息自动转储到GS
  3. 表单提交触发函数运行
  4. 函数在GC中创建一个事件
  5. 事件创建后,信息将从GS中删除

冲洗并重复-

问题:我试图根据表单用户的员工级别使GC事件的颜色不同。我目前正在尝试使用If else梯形图来完成此操作,但我不知道如何引用我在第21行创建的事件。它给了我";ReferenceError:setColor未定义scheduleShifts@Code.gs:24";我不知道如何定义它,也不知道这种方法是否有效。我很感激你提前提供的帮助!

奖金问题:我不知道如何向客人发送通知,告知他们已使用代码添加到活动中。

代码的基本功能运行得很好——正是这两件小事让我失眠。

.createEvent((返回一个"日历事件";资源,这可以存储在一个变量中,以访问其方法并将更改应用于该特定实例,这就是它在代码中的样子:

var event = eventCal.createEvent(volunteer, startTime, endTime, {description: "Please make sure your PTO is submitted"}).addEmailReminder(1440).addGuest(spreadsheet.getRange("B2").getValue())
if (EmpLvl == "Partner"){
event.setColor("11");
}else if (EmpLvl == "Principal"){
event.setColor("6");
}else if (EmpLvl == "Senior Manager"){
event.setColor("9");
}else if (EmpLvl == "Manager"){
event.setColor("1")
}else if (EmpLvl == "Senior"){
event.setColor("10")
}else if (EmpLvl == "Staff"){
event.setColor("2")
}else if (EmpLvl == "Intern"){
event.setColor("5")
}else if (EmpLvl == "Director"){
event.setColor("7")
}else if (EmpLvl == "Administration"){
event.setColor("3")
}if (EmpLvl == "Outside Consultant"){
event.setColor("8")
}

现在,要使用CalendarApp发送邀请,您需要在";选项";参数,并使用";sendInvites";像这样的标志:

var event = eventCal.createEvent(volunteer, startTime, endTime,
{description: "Please make sure your PTO is submitted", 
sendInvites: true, 
guests: spreadsheet.getRange("B2").getValue()})
.addEmailReminder(1440);

有关可用参数的更多信息,请点击此处。我发现另一篇帖子与日历事件有关,并且可以在使用高级日历服务创建事件后发送邀请。

最新更新