Google 企业应用套件脚本 - 从电子表格到非默认日历创建日历事件时出现问题



我在今年早些时候创建了一个脚本,用于从电子表格行创建日历事件,并将其放入共享家庭日历和我自己的辅助日历中。

今年早些时候它运行良好,但现在它不是添加到辅助日历中,而是添加到我的默认日历中,我根本没有将其编码到脚本中。

如何按 ID 调用日历的语法是否发生了变化?

//push new events to calendar
function pushToCalendar() {
  //spreadsheet variables
  var book = SpreadsheetApp.getActiveSpreadsheet();
  var now = new Date();
  var currentYear = Utilities.formatDate(new Date(now.getTime()), 'America/Chicago', 'yyyy');
  var currentSheet = ("Events" + " " + currentYear);
  var sheet = book.getSheetByName(currentSheet);
  var lastRow = sheet.getLastRow(); 
  var lastCol = sheet.getLastColumn();
  var range = sheet.getRange(2,1,lastRow,lastCol);
  var values = range.getValues();
      //calendar variables
      var calendar = CalendarApp.getCalendarById('sample1@group.calendar.google.com');
      var calendarShared = CalendarApp.getCalendarById('sample2@group.calendar.google.com');
      var numValues = 0;
      for (var i = 0; i < values.length; i++) {     
        //check to see if values 0,1,3,4,5,6 are filled out
      if ((values[i][0]) && (values[i][1]) && (values[i][3]) && (values[i][4]) && (values[i][5]) && (values[i][6])) 
      {
          //check if it's been entered before  (values[i][8] = '')||(values[i][8] = null)  
          if (values[i][7].toString().toLowerCase() !== 'y') { 
            //create event https://developers.google.com/apps-script/class_calendarapp#createEvent
            var newEventTitle = 'Game: ' + values[i][0] + ' - ' + values[i][1];
            var newSharedTitle = 'Adam - Game: ' + values[i][0] + ' - ' + values[i][1];
            var startDay = Utilities.formatDate(new Date(values[i][3]), 'America/Chicago', 'MMMM dd, yyyy');
            var startTime = Utilities.formatDate(new Date(values[i][4]), 'America/Chicago', 'HH:mm');
            var start = startDay + ' ' + startTime;
            var endDay = Utilities.formatDate(new Date(values[i][5]), 'America/Chicago', 'MMMM dd, yyyy');
            var endTime = Utilities.formatDate(new Date(values[i][6]), 'America/Chicago', 'HH:mm');
            var end = endDay+ ' ' + endTime;
            var details = values[i][9] + ' - $' + values[i][10] + 'n' + 'n' + 'Crew: ' + 'n' + values[i][14] + 'n' + values[i][15] + 'n' + values[i][16] + 'n' + 'n' +'Assessor:' + 'n' + values[i][17];
            //new event on Secondary AND Shared Calendar
            var newEvent = calendar.createEvent(newEventTitle, new Date(start), new Date(end), {location: values[i][13], description: details});
            var newSharedEvent = calendarShared.createEvent(newSharedTitle, new Date(start), new Date(end), {location: values[i][13], description: details});
            //get ID
            var newEventId = newEvent.getId();
            //mark as entered, enter ID
            sheet.getRange(i+2,8).setValue('y');
            sheet.getRange(i+2,9).setValue(newEventId);
          } 
        else;
        }
        numValues++;
      }

提前感谢您的帮助!

尝试创建事件,然后将其插入日历中,如下所示:

 var event = {
summary:summary,
location: location,
description: '',
start: {dateTime: newdatestart.toISOString()},
end: {dateTime: newdateend.toISOString()},
attendees: [
{email: ''},{email: ''}],
// Red background. Use Calendar.Colors.get() for the full list.
colorId: 11
};
event = Calendar.Events.insert(event, calendarId);

我也遇到了同样的ID问题......显然,您需要摆脱事件ID本身的@google.com 部分,然后将其作为数组的一部分获取

.getId().split('@')[0];

只需添加此代码,它对我来说就像一个魅力