0

スクリプトと関数の後半で、この「メソッドを呼び出せない」エラーが発生し続けます。理由はわかりません。テンプレートスクリプトを正確に模倣しましたが、なぜメソッドが呼び出されないのかわかりません。

任意の洞察をいただければ幸いです。

ありがとう。

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;
 }
}
4

1 に答える 1

1

この行はおそらく何も返しません:

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

このようにログに記録して確認できます Logger.log(cal)

「Phoenix Reservations」は、所有しているカレンダー名ですか、それとも書き込みアクセス権を持っていますか?

編集 : この単純な機能をテストして、このカレンダーですべてが問題ないかどうかを確認できますか? 今すぐイベントを作成します。

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
  });
  }   
}

編集 2: カレンダー名を表示するようにロガーを変更しました。

于 2012-06-30T13:25:54.273 に答える