我需要脚本将事件从我的电子表格导出到各自的日历(列J),没有重复。我有以下脚本,但是没有能够将它导出到我的各种日历。
var scriptProperties = PropertiesService.getScriptProperties();// Set multiple script properties in one call.
scriptProperties.setProperties({
'CF Library': 'cflibrary@efriends44221.org',
'Arts/Crafts': 'efriends44221.org_a63hoveiu9jqisb826bllsjkp8@group.calendar.google.com',
'Computers & Technology': 'efriends44221.org_mvov2vcook8amqltimt67i5lb0@group.calendar.google.com',
'Library Closed': 'efriends44221.org_e4lvfr74rchoanhaqkmh8evo4c@group.calendar.google.com',
'Story Time': 'efriends44221.org_6hc52m954fumu33o8tiob03mhs@group.calendar.google.com',
'Board Meeting': 'efriends44221.org_g9dkgvpoenbpakshoaj7i84bj8@group.calendar.google.com',
'Continuing Education': 'efriends44221.org_aur9f7fgj401biph9370l7vdp8@group.calendar.google.com',
'Movies': 'efriends44221.org_c7v1c9hs041ogprqasaguc6cq4@group.calendar.google.com',
'Summer Reading Program': 'efriends44221.org_r7nfru4r624a41ifqu2n540qss@group.calendar.google.com',
'Book Sale': 'efriends44221.org_fr19jra74rs5ia4i4ortd44sgg@group.calendar.google.com',
'Exhibit': 'efriends44221.org_151qtt5afnr7hs6fae4g05vrjg@group.calendar.google.com',
'Music': 'efriends44221.org_uo2j384ldonbasja8drpl8520k@group.calendar.google.com',
'Tax Preparation': 'efriends44221.org_lhdtbjunpjqtn52k9o5gkgol5k@group.calendar.google.com',
'Business & Career': 'efriends44221.org_gboa7mo6i9uvothv4s1q929ne8@group.calendar.google.com',
'Health & Wellness': 'efriends44221.org_gh97a27i0bqc93hndpr08435uc@group.calendar.google.com',
'Non-Profit & Community': 'efriends44221.org_mfm9u656llmtubnvvm8h2ehjak@group.calendar.google.com',
'Workshop/Class': 'efriends44221.org_gbarc152o2h55c67fc8cpshqfo@group.calendar.google.com',
'Club/Discussion Group': 'efriends44221.org_c2a7vkhh3hlvlh9ijkdlcqin1s@group.calendar.google.com',
'History': 'efriends44221.org_rnto9utgss0h2ltb83hp203634@group.calendar.google.com',
'Special Event': 'efriends44221.org_7u2tqcktujiautq2qes591p8tk@group.calendar.google.com'});
function ExportEvents() {
var sheet = ss.getSheetByName("Events");
var headerRows = 1;
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
var calendarName = sheet.getRange('J:J').getValue();
var calendarId = ScriptProperties.getProperty(calendarName);
var cal = CalendarApp.getCalendarById(calendarId);
var timeZone = cal.getTimeZone();
ss.setSpreadsheetTimeZone(timeZone);
for (i in data) {
if (i < headerRows) continue;
var row = data[i];
var date = new Date(row[0]);
var title = row[1];
var tstart = setTimeToDate(date,row[2]);
var tstop = setTimeToDate(date,row[3]);
Logger.log('date = '+date+'tstart = '+tstart+' tstop = '+tstop);
var location = row[4];
var description = row[5];
var type = row[6];
var times = row[7];
var enddate = row[8];
var calname = row[9];
var id = row[10];
var status = row[11];
try {
var event = cal.getEventSeriesById(id);
event.setTitle('---');
}catch(e){
if (calname = 'CF Library') {
var newEvent = cal.createEvent(title, tstart, tstop, {description:description,location:location});// create a "normal" event
}else if (calname = 'Arts/Crafts') {
var newEvent = cal.createEvent(title, tstart, tstop,{description:description,location:location});
}else if (calname = 'Computers & Technology') {
var newEvent = cal.createEvent(title, tstart, tstop, {description:description,location:location});
}else if (calname = 'Library Closed') {
var newEvent = cal.createEvent(title, tstart, tstop, {description:description,location:location});
}else if (calname = 'Story Time') {
var newEvent = cal.createEvent(title, tstart, tstop, {description:description,location:location});
}
row[10] = newEvent.getId(); // Update the data array with event ID
Logger.log('Event Created');// while debugging
var event = cal.getEventSeriesById(row[10]);// make it an event Series
}
event.setTitle(title);
event.setDescription(desc);
event.setLocation(loc);
if(type=='PM'){ // Per Month
var recurrence = CalendarApp.newRecurrence().addMonthlyRule().times(times)
event.setRecurrence(recurrence, tstart, tstop);// we need to keep start and stop otherwise it becomes an AllDayEvent if only start is used
}else if(type=='PW'){ // Per Week
var recurrence = CalendarApp.newRecurrence().addWeeklyRule().times(times)
event.setRecurrence(recurrence, tstart, tstop);
}else if(type=='PD'){ //Per Day
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(times)
event.setRecurrence(recurrence, tstart, tstop);
}else if(type=='PY'){ //Per Year
var recurrence = CalendarApp.newRecurrence().addYearlyRule().times(times)
event.setRecurrence(recurrence, tstart, tstop);
}else if(type=='MCD'){//MCD is Monthly on a certain day.
var recurrence = CalendarApp.newRecurrence().addMonthlyRule().onlyOnMonthDay(times);// Creates a rule that recurs every month on a certain day of the month.
event.setRecurrence(recurrence, tstart, tstop);
}else if(type=='TTH'){//TTH is 2 days per week - Tues, Thurs.
var recurrence = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeekdays([CalendarApp.Weekday.TUESDAY, CalendarApp.Weekday.THURSDAY]).until(new Date(enddate));
event.setRecurrence(recurrence, tstart, tstop);
}else if(type=='MWF'){//MWF is 3 days per week - Mon, Weds, Fri.
var recurrence = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeekdays([CalendarApp.Weekday.MONDAY, CalendarApp.Weekday.WEDNESDAY, CalendarApp.Weekday.FRIDAY]).until(new Date(enddate));
event.setRecurrence(recurrence, tstart, tstop);
}
data[i] = row ;
}
dataRange.setValues(data);
for (i in data) {
if (i < headerRows) continue;
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 1;// Is the start row & also the header row.
var dataR = sheet.getDataRange();
var data = dataR.getValues();
var rowNum = startRow;
var destRow = Number(startRow)+Number(i);
Logger.log(startRow+' '+i+' '+(startRow+i))
Logger.log(startRow+' '+i+' '+(Number(startRow)+Number(i)))
sheet.getRange(Number(++destRow)-1, 12).setValue("Event Exported");
SpreadsheetApp.flush();
}
}
答案 0 :(得分:0)
var destRow = Number(headerRows)+Number(i);
Logger.log(headerRows+' '+i+' '+(headerRows+i))
Logger.log(headerRows+' '+i+' '+(Number(headerRows)+Number(i)))
var calendarName = sheet.getRange(Number(destRow), 10).getValue();
我添加了var destRow和Loggers,并在var calendarName中添加了我添加的getRange()(Number(destRow),10)。