简体   繁体   English

Google App 脚本 - 添加或更新日历事件

[英]Google App Script - Add or Update Calendar Event

Updating previous question with detailed example.用详细的例子更新前面的问题。 I have a google sheet with three used columns (A: Event Title, B: Event Description, and D: Event Date).我有一个包含三个已用列(A:事件标题,B:事件描述和 D:事件日期)的谷歌表。 I want to create a new all day event on Google Calendar if none exists, and update the existing one if it already exists.如果不存在,我想在 Google 日历上创建一个新的全天活动,如果它已经存在,则更新现有的活动。

Here is the code I tried: I am getting the error: TypeError: Cannot read property 'setDescription' of undefined这是我尝试的代码:我收到错误:TypeError:无法读取未定义的属性“setDescription”

function updatecal(){
  var cal = CalendarApp.getCalendarById('c_lmsj3r1ogsaafhc68gfalstdco@group.calendar.google.com');
  var data = SpreadsheetApp.getActive().getSheetByName("Data For Calendar");
  const rows = data.getDataRange().getValues();
  rows.forEach(function(row, index){
    if (index === 0) return;
    var eventdate = data.getRange(index, 4, 1, 1).getValue();
    var eventtitle = data.getRange(index,1,1,1).getValue();
    var eventdescription = data.getRange(index,2,1,1).getValue();
    console.log(eventdate + eventtitle + eventdescription)
    const eventdate1 = new Date(eventdate)
    const events = cal.getEventsForDay(eventdate1);
    if (events.lenght == 0){
      var newevent = cal.createAllDayEvent(eventtitle,eventdate1,
    {description: eventdescription});
    } else {
      ev = events[0];
      ev.setDescription(eventdescription)
    }

  })

}

There is a typo in line 13 inside the if statement. if语句中的第 13 行有一个错字。 You wrote lenght instead of length If you fix that the code runs just fine and the calendar events are created without any problem.你写的是lenght而不是length如果你修复代码运行得很好并且日历事件创建没有任何问题。

function updatecal(){
  var cal = CalendarApp.getCalendarById('c_lmsj3r1ogsaafhc68gfalstdco@group.calendar.google.com');
  var data = SpreadsheetApp.getActive().getSheetByName("Data For Calendar");
  const rows = data.getDataRange().getValues();
  rows.forEach(function(row, index){
    if (index === 0) return;
    var eventdate = data.getRange(index, 4, 1, 1).getValue();
    var eventtitle = data.getRange(index,1,1,1).getValue();
    var eventdescription = data.getRange(index,2,1,1).getValue();
    console.log(eventdate + eventtitle + eventdescription)
    const eventdate1 = new Date(eventdate)
    const events = cal.getEventsForDay(eventdate1);
    if (events.length == 0){          //The error was in this line
      var newevent = cal.createAllDayEvent(eventtitle,eventdate1,
    {description: eventdescription});
    } else {
      ev = events[0];
      ev.setDescription(eventdescription)
    }

  })

}

References:参考:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM