问题
I am trying to write a program that will post data from google sheets to google calendar and i am recieving this error:
TypeError: Cannot call method "createEvent" of null. (line 38, file "Code")
Here is my code below:
function calandarsync() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var eventCal = CalendarApp.getCalendarById('bHVhbmFtYXJhbno3MjBAZ21haWwuY29t');
var lr = spreadsheet.getLastRow();
Logger.log(lr);
var data = spreadsheet.getRange("B2:I"+lr+"").getValues();
for (x=0; x<data.length; x++) {
var event = data[x];
var price = data[0];
var wordcount = data[2];
var duedate = data[3];
var duetime = data[4];
var order = data[5];
var buyer = data[6];
var acx = data [7];
var files = data[8];
var summary = buyer + " " + wordcount;
var eventtime = duedate + " " + duetime;
var final = new Date(eventtime);
var ONE_MINUTE_IN_MILLIS = 60000;
var afterAddingTenMins = new Date(final + (10 * ONE_MINUTE_IN_MILLIS));
var event = {
'price': price,
'wordcount' : wordcount,
'duedate' : duedate,
'duetime' : duetime,
'order' : order,
'buyer' : buyer,
'acx' : acx,
'files' : files,
}
eventCal.createEvent(summary, final, afterAddingTenMins, event)
}
}
Thank you everybody for the help!
EDIT
Here is the log:
[19-12-29 06:27:54:459 PST] 2.0
Here is the execution Timescript:
[19-12-29 06:27:54:304 PST] Starting execution
[19-12-29 06:27:54:310 PST] SpreadsheetApp.getActiveSheet() [0 seconds]
[19-12-29 06:27:54:319 PST] CalendarApp.getCalendarById([bHVhbmFtYXJhbno3MjBAZ21haWwuY29t]) [0.008 seconds]
[19-12-29 06:27:54:458 PST] SpreadsheetApp.Sheet.getLastRow() [0.138 seconds]
[19-12-29 06:27:54:460 PST] Logger.log([2.0, []]) [0 seconds]
[19-12-29 06:27:54:460 PST] SpreadsheetApp.Sheet.getRange([B2:I2]) [0 seconds]
[19-12-29 06:27:54:555 PST] SpreadsheetApp.Range.getValues() [0.094 seconds]
[19-12-29 06:27:54:699 PST] Execution failed: TypeError: Cannot call method "createEvent" of null. (line 38, file "Code") [0.247 seconds total runtime]
回答1:
So i found out that my data and event variable were all messed up and not working properly. Once i fixed that i went back and just put the email as the id and it worked. Here is the code:
function calandarsync() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var eventCal = CalendarApp.getCalendarById('luanamaranz720@gmail.com');
var lr = spreadsheet.getLastRow();
Logger.log(lr);
var count = spreadsheet.getRange("B2:I"+lr+"").getValues();
for (x=0; x<count.length; x++) {
var data = count[x];
var price = data[0];
var wordcount = data[1];
var duedate = data[2];
var duetime = data[3];
var order = data[4];
var buyer = data[5];
var acx = data [6];
var files = data[7];
var summary = buyer + " " + wordcount;
var startdate = duedate + " " + duetime;
var event = {
'price': price,
'wordcount' : wordcount,
'duedate' : duedate,
'duetime' : duetime,
'order' : order,
'buyer' : buyer,
'acx' : acx,
'files' : files,
'description' : 'Price: ' + price + '\n'+ 'Words: ' + wordcount + '\n' + 'Due Date: ' + duedate + '\n' + 'Due Time: ' + duetime + '\n' + 'Order Number: ' + order + '\n' + 'Buyer Name: ' + buyer + '\n' + 'ACX Format: ' + acx + '\n' + 'Files: ' + files,
}
Logger.log(event);
eventCal.createEvent(summary, duedate, duedate, event)
}
}
来源:https://stackoverflow.com/questions/59520266/typeerror-cannot-call-method-createevent-of-null-line-38-file-code