I have a google worksheet with multiple sheets, what do I add to this script to target a particular sheet in that worksheet only? At the moment it's just going to the far left-hand sheet. I've tried "getSheetByName("Calendar")", but I get errors so obviously there is more I need to do.
function export_gcal_to_gsheet() {
var mycal = "email";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(new Date("July 01, 2022 00:00:00 UTC"), new Date ());
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clearContents();
var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event"]]
var range = sheet.getRange(6, 1, 1, 14);
range.setValues(header);
for (var i = 0; i < events.length; i++) {
var row = events.length + 6 - i;
var myformula_placeholder = '';
var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent()]];
var range=sheet.getRange(row,1,1,14);
range.setValues(details);
var cell=sheet.getRange(row,7);
cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))');
cell.setNumberFormat('.00');
}
}
I have tried your script on my side and changed:
var sheet = SpreadsheetApp.getActiveSheet();
to:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calendar");
and your script worked fine and populated the desired sheet with the data provided by the script. I assumed you forgot to use the getActiveSpreadsheet()
function which resulted in your script returning an error.