You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script创建日历事件后设置颜色及嘉宾通知问题

Google Apps Script 日历事件设置问题解答

问题背景

我没上过编程课,纯靠资料自学Google Apps Script,现在已经实现了「表单提交数据到表格→触发函数创建日历事件→删除表格对应行」的流程,但遇到两个问题:

  1. 按员工级别设置日历事件颜色时,报错ReferenceError: setColor is not defined,不知道怎么引用刚创建的事件来调用setColor方法
  2. 不知道怎么给添加的嘉宾发送事件加入通知

解决代码与说明

先给你改好的完整代码,再逐个讲修改点:

function scheduleShifts() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("K1").getValue();
  var eventCal = CalendarApp.getCalendarById(calendarId);
  var count = spreadsheet.getRange("I1").getValue();

  var signups = spreadsheet.getRange(2,2,count,7).getValues();

  for (let x=0; x<signups.length; x++) {
    var shift = signups[x];
    
    var startTime = shift[4];
    var endTime = shift[5];
    var volunteer = shift[3];
    var EmpLvl = shift[6]; // 改成从当前行取员工级别,原来固定H2是错误的
    
    // 将创建的日历事件存为变量event,后续用它调用专属方法
    var event = eventCal.createEvent(volunteer, startTime, endTime, {
      description: "Please make sure your PTO is submitted",
      sendInvites: true // 开启嘉宾邀请通知
    })
    .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");
    }else if (EmpLvl == "Outside Consultant"){ // 补上遗漏的else,避免逻辑错误
      event.setColor("8");
    }
  }

  spreadsheet.deleteRows(2,count);
  spreadsheet.getRange("I1").clearContent();
  spreadsheet.getRange("I1").setFormula("=COUNT($A$1:$A$1103)");
}

问题1:颜色设置报错的解决

  1. 保存事件对象:原来的代码创建事件后直接链式调用方法,但没把事件存下来。现在把eventCal.createEvent(...)的结果存在event变量里,event就是刚创建的日历事件对象,它自带setColor方法。
  2. 修正级别取值:原来固定取H2单元格的员工级别,循环里所有事件都会用同一个级别,现在改成从当前循环的行数据里取(这里假设员工级别在signups数组的第7列,对应索引6,你可以根据自己表格的列调整)。
  3. 调用正确方法:把原来的setColor("xx")改成event.setColor("xx"),这样就是给刚创建的这个事件设置颜色。

问题2:嘉宾通知的解决

在创建事件的高级选项里加上sendInvites: true,这样添加嘉宾时会自动发送邮件邀请。这个选项是createEvent方法第四个参数(那个配置对象里的属性),加上后不用额外写代码发通知。

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:24:19