TypeError: Cannot call method “createEvent” of null. (line 38, file “Code”)

半世苍凉 提交于 2020-01-16 08:07:53

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!