Используя этот отличный ответ, мне удалось изменить его, чтобы создать сценарий для экспорта событий из Google Таблицы в Календарь Google.Сценарий Google, который создает события Календаря Google из таблицы Google - «Превышено максимальное время выполнения»
Create Google Calendar Events from Spreadsheet but prevent duplicates
Затем я получил некоторые большой совет, и работал, что он не был заселение столбца EVENTID из-за ошибки я получал - «превышен максимальное время выполнения» - из-за большое количество строк (до 1000).
Create Google Calendar events from a Google Spreadsheet - script is creating duplicates
Я просматривал ответы, чтобы попытаться выработать способ обойти это, но не могу показаться, чтобы выработать ответ! Извинения - я совершенно новичок в этом.
Может ли кто-нибудь указать мне в правильном направлении, как я могу заставить скрипт обрабатывать более 5 минут или что-то еще?
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Export Events",
functionName : "exportEvents"
}];
sheet.addMenu("Calendar Actions", entries);
};
/**
* Export events from spreadsheet to calendar
*/
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 2; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
var data = range.getValues();
var calId = "[email protected]";// use default claendar for tests
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var date = new Date(row[12]); // WHC
var title = row[18]; // WHC Title
var tstart = setTimeToDate(date,row[15]);// start time
var tstop = setTimeToDate(date,row[16]);// end time
Logger.log('date = '+date+'tstart = '+tstart+' tstop = '+tstop);
var id = row[17]; //EventID WHC
// Check if event already exists, update it if it does
try {
var event = cal.getEventSeriesById(id);
event.setTitle('got you');// this is to "force error" if the event does not exist, il will never show for real ;-)
}catch(e){
var newEvent = cal.createEvent(title, tstart, tstop); // create a "normal" event
row[17] = newEvent.getId(); // Update the data array with event ID
Logger.log('event created');// while debugging
var event = cal.getEventSeriesById(row[17]);// make it an event Serie
}
event.setTitle(title);
}
// Record all event IDs to spreadsheet
range.setValues(data);
}
function setTimeToDate(date,time){
var t = new Date(time);
var hour = t.getHours();
var min = t.getMinutes();
var sec = t.getSeconds();
var dateMod = new Date(date.setHours(hour,min,sec,0))
return dateMod;
}
Спасибо Серж! Поэтому из того, что он посоветовал, я бы предположил, что заставить его прервать себя каждые 125 строк, было бы безопасно ... и извинить мою путаницу, но где я буду использовать/ставить эту информацию, чтобы исправить эту проблему? – Ingrid
Этот код не подсчитывает строки, он подсчитывает время, потраченное ... это безопаснее. Это полный код, просто используйте его как есть или скопируйте соответствующие части в свои. –
Многие, огромное спасибо! – Ingrid