user1492352
user1492352

Reputation: 1

Error occured: TypeError: Cannot call method "createEvent" of undefined via Google Script

Within the second half of my script and function, I keep getting this Cannot call method error, and I do not know why. I mimic'd the template script exactly, but I am unsure why it does not call the method.

Any insight would be greatly appreciated.

Thanks.

function createEvents(e){

//Get the active application
var app = UiApp.getActiveApplication();

try{
   //get the entries;
   var eventDate = e.parameter.eventDate;
var eventPeople = e.parameter.eventPeople;
var eventCompany = e.parameter.eventCompany;
var eventName = e.parameter.eventName;
var eventTime = e.parameter.eventTime;  
var eventPhone = e.parameter.eventPhone;  
var eventEmail = e.parameter.eventEmail;  
 var eventTaken = e.parameter.eventTaken;  


//Get the calendar
var cal = CalendarApp.getCalendarsByName('Phoenix Reservations')[0];//Change the calendar name
var eventStartTime = eventDate;
//End time is calculated by adding an hour in the event start time 
var eventEndTime = new Date(eventDate.valueOf()+60*60*1000);
//Create the events
cal.createEvent(eventPeople,eventCompany,eventName,eventTime,eventPhone,eventEmail,eventTaken);

//Log the entries in a spreadsheet
var ss = SpreadsheetApp.openById('KEY_TAKEN_OUT');//Change the spreadhseet key to yours
var sheet = ss.getSheets()[0];
sheet.getRange(sheet.getLastRow()+1, 1, 1, 5).setValues([[new Date(), eventDate,eventPeople,eventCompany,eventName,eventTime,eventPhone,eventEmail,eventTaken, 'Event created']]);

//Show the confirmation message
app.add(app.createLabel('Event created Successfully'));
//make the form panel invisible
app.getElementById('panel').setVisible(false);
return app;
}

  //If an error occurs, show it on the panel
  catch(e){
   app.add(app.createLabel('Error occured: '+e));
   return app;
 }
}

Upvotes: 0

Views: 2169

Answers (1)

Serge insas
Serge insas

Reputation: 46802

This line probably returns nothing :

var cal = CalendarApp.getCalendarsByName('Phoenix Reservations')[0];//Change the calendar name

You could log it to confirm like this Logger.log(cal)

Is 'Phoenix Reservations' a calendar name that you own or that you have write access to ?

EDIT : could you test this simple function to see if everything is ok with this calendar? It will create an event just now.

function testcal(){
  var cal = CalendarApp.openByName('Phoenix Reservations');// or you can replace this with your var definition : same result normally ;-)
  if (cal) {
  var title = 'Test Event';
  var start = new Date();
  var end = new Date(start.valueOf()+60*60*1000);
  Logger.log(cal.getName()+' '+start+'   '+end)
  var desc = 'Created using Google Script';
  var loc = 'there';

  var event = cal.createEvent(title, start, end, {
      description : desc,
      location : loc
  });
  }   
}

EDIT 2 : I modified the logger to make it show the calendar name.

Upvotes: 1

Related Questions