我在今年早些时候创建了一个脚本,用于从电子表格行创建日历事件,并将其放入共享家庭日历和我自己的辅助日历中。
今年早些时候它运行良好,但现在它不是添加到辅助日历中,而是添加到我的默认日历中,我根本没有将其编码到脚本中。
如何按 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];
只需添加此代码,它对我来说就像一个魅力