하나의 Google 시트에서 여러 개의 Google 캘린더로 이벤트를 만드는 시트를 만들려고합니다. 나는 Mogsdad의이 게시물 Create Google Calendar Events from Spreadsheet but prevent duplicates에서 환상적인 해결책으로 수정 된 시트를 사용하고 있습니다. 그러나 나는 3 가지 다른 달력에 들어가기 위해 작업량을 3 배로 늘렸고 프로그래밍에 첫 걸음을 보내고 싶습니다. 내 생각은 한 걸음 더 나아가서 조건부와 동일한 이름을 가진 하나 또는 모든 세 개의 달력에서 (확인되지 않음, 날짜 저장, 확인 됨) 중 하나를 포함하는 드롭 다운 열 (레이블이 지정된 상태)을 추가하려는 것입니다. 쓰러지 다.스프레드 시트의 여러 Google 캘린더에서 이벤트 만들기
내 시트로 배치: -
날짜 | 제목 | 시작 시간 | 종료 시간 | 위치 | 설명 | 신분증 | 상태 | 확인 된 세부 사항 | 확인 된 시작 시간 | 확인 된 종료 시간 |
내 생각에 확인 된 캘린더에는 다른 두 가지 정보와 약간 다른 정보가 있습니다.
내가 사용하고 기존 코드는
/**
* Adds a custom menu to the active spreadsheet, containing a single menu item
* for invoking the exportEvents() function.
* The onOpen() function, when defined, is automatically invoked whenever the
* spreadsheet is opened.
* For more information on using the Spreadsheet API, see
* https://developers.google.com/apps-script/service_spreadsheet
*/
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 = 1; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
var data = range.getValues();
var calId = "[email protected]";
var cal = CalendarApp.getCalendarById(calId);
for (i=0; i<data.length; i++) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var date = new Date(row[0]); // First column
var title = row[1]; // Second column
var tstart = new Date(row[2]);
tstart.setDate(date.getDate());
tstart.setMonth(date.getMonth());
tstart.setYear(date.getYear());
var tstop = new Date(row[3]);
tstop.setDate(date.getDate());
tstop.setMonth(date.getMonth());
tstop.setYear(date.getYear());
var loc = row[4];
var desc = row[5];
var id = row[6]; // Sixth column == eventId
// Check if event already exists, delete it if it does
try {
var event = cal.getEventSeriesById(id);
event.deleteEventSeries();
row[6] = ''; // Remove event ID
}
catch (e) {
// do nothing - we just want to avoid the exception when event doesn't exist
}
//cal.createEvent(title, new Date("March 3, 2010 08:00:00"), new Date("March 3, 2010 09:00:00"), {description:desc,location:loc});
var newEvent = cal.createEvent(title, tstart, tstop, {description:desc,location:loc}).getId();
row[6] = newEvent; // Update the data array with event ID
debugger;
}
// Record all event IDs to spreadsheet
range.setValues(data);
}
그래서 나는 달력뿐만 아니라 2 개의 추가 일정은 "확인"에 갈 수있는 새로운 정보를 정의 할 필요가 실현이다. 내 문제는 일련의 if 루프를 사용하여 3 개의 캘린더에 이벤트를 전달하는 방법을 알 수 없다는 것입니다. 캘린더를 추가하는 것이 좋습니다. "확인되지 않은 캘린더"에 나타나는 모든 이벤트는 해당 날짜까지 업 그레 이드 된 날짜를 저장하기 위해 추가되고 그 날짜로 설정되면 마지막으로 "확인 됨"으로 표시됩니다. 따라서 확정 된 사건은 3 개의 모든 달력에 나타나지만 확인되지 않은 사건은 거기에만 나타납니다.
저는 프로그래밍에있어서 아주 새로운 제품입니다. 제발 다른 사람들의 뻔뻔한 표절을 용납하고 변명하십시오. (덕분에 Mogsdad에게 감사드립니다) 나는 어떤 도움을 주셔서 감사합니다!
안녕하세요, 티파니, 매우 감사합니다. 매우 도움이되고 잘 작동합니다. 나는 물어보고 싶은 후속 질문을 가지고있다. 나는 "확인 된"이벤트를 "SaveTheDate"와 "Unconfirmed"캘린더로 이동 한 다음 "Unconfirmed"캘린더 만 "Unconfirmed"캘린더로 이동하기 위해 "SaveTheDate"3 개의 모든 캘린더에 넣기를 원합니다. 나도 한 캘린더 만 선택하는 대신에 내가 어떻게 그것들을 보완 할 수 있는지 아십니까? 내 원래 생각에서 나는 "if"루프를 다음 각 캘린더에 보낼 것이지만 귀하의 방법은 나를 거기에있는 것처럼 느낄 수있는 단순한 방법! 사전에 감사드립니다 –
내 대답보기 - 도움이 될만한 것을 추가했습니다. 유용하다고 생각되면 제 대답을 수락하십시오! –
이전 답변을 삭제하기 전에 기존 이벤트를 삭제할 수있는 능력 (중복을 피하기 위해)을 잊었습니다. 내가 deleat 이벤트 라인도 업데이트 될 때까지 말입니다. {var event = calendars [ 'Unconfirmed']. getEventSeriesById (id); 모든 이벤트가 삭제되었습니다. 나는 try { var event = calendars [ 'Confirmed']로 2 개의 addtional try 및 catch 함수를 추가하려고 시도했다. getEventSeriesById (id); event.deleteEventSeries(); } catch (e) { }하지만 실제로 작동하지 않는 이유는 무엇입니까? –