Action
Import Calendar
Prompt to select a calendar and date range, then import all events in that calendar and date range as a Markdown list in a new draft.
Steps
-
script
let calendars = Calendar.getAllCalendars(); let calendarNames = calendars.map(x => x.title); let p = Prompt.create(); p.title = "Import Calendar"; p.message = "Select calendar and date range to import events from the calendar as a Mardown lst"; p.addSelect("calendar", "Calendar", calendarNames, [], false); p.addDatePicker("start","Start date", (1).years().ago(), {"mode":"date"}); p.addDatePicker("end","End date", Date.today(), {"mode":"date"}); p.addButton("Import"); if (p.show()) { let selected = p.fieldValues["calendar"]; let ix = calendarNames.findIndex(x => x == selected); let cal = calendars[ix]; let start = p.fieldValues["start"]; let end = p.fieldValues["end"]; if (cal) { if (!importCal(cal, start, end)) { context.fail(); } } } else { context.cancel(); } function importCal(cal, start, end) { let events = cal.events(start, end); if (events == "undefined" || events.length == 0) { alert('No events found to import'); return false; } let t = [] for(let event of events) { t.push("- *" + event.title + "*\n"); if (event.isAllDay) { t.push(" - All Day: " + event.startDate + " - " + event.endDate + "\n"); } else { t.push(" - Start: " + event.startDate + ", End: " + event.endDate + "\n"); } if (event.notes.length > 0) { t.push(" - " + event.notes + "\n"); } t.push("\n"); } let d = Draft.create(); d.content = t.join(""); d.update(); editor.load(d); return true; }
Options
-
After Success Default Notification Info Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.