无法使用此脚本在日历上创建事件

人气:730 发布:2022-10-16 标签: google-apps-script google-sheets google-calendar-api

问题描述

我在Google表格单元格U69、U70、X69中分别有活动标题、开始日期和结束日期。

它显示脚本中执行成功,但未添加事件。

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById("c_v6h2ud0dru0dqojch3103sue20@group.calendar.google.com");
  var name = spreadsheet.getRange('U69').getValue();
  var start = new Date(spreadsheet.getRange('U70').getValue());
  var end =  new Date(spreadsheet.getRange('X69').getValue());
  eventCal.createEvent(name,start,end);

  Logger.log('Reminder is added to your calendar');
}

编辑2:

我是在一张纸上做的,我是这张纸的所有者。我也在创作剧本。我正在运行它,但看不到日历上的条目。 5个人可以接触到那张床单。我已授予从日历设置部分进行更改和管理共享的全部5项内容的访问权限。

请帮忙。我做错了什么?语法错误在哪里?我把变量的引号放对了吗?或者是其他原因?

编辑3: 我添加了logger.log(日历)。它在脚本中显示执行成功(根据所附图像),但未添加该事件。

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("AA69").getValue();
  var eventCal = CalendarApp.getCalendarById("c_v6h2ud0dru0dqojch3103sue20@group.calendar.google.com");

  var name = spreadsheet.getRange('U69').getValue();
  var start = new Date(spreadsheet.getRange('U70').getValue());
  var end =  new Date(spreadsheet.getRange('X69').getValue());
  eventCal.createEvent(name,start,end);
  Logger.log(calendarId);
}

[![在此处输入图片描述][1]][1]

编辑4: 我用ISDATE()公式进行了验证。U70和X69都是True。该代码还显示执行已完成。Logger.Log还提供了正确的单元格值。

我应该如何处理语法NW?仍未添加事件。

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Course');
  var eventCal = CalendarApp.getCalendarById('c_v6h2ud0dru0dqojch3103sue20@group.calendar.google.com');
  var name = spreadsheet.getRange('U69').getValue();  

  var start = spreadsheet.getRange('U70').getDisplayValue(); 
  var end = spreadsheet.getRange('X69').getDisplayValue();
  eventCal.createEvent(name,new Date(start),new Date(end));
  Logger.log(end);
}

编辑5: 迈克的回答对我很有帮助。太感谢你了,迈克

推荐答案

以下是一段代码,它可以在3种方式下正常工作:getCalendarsByName、getCalendarByID、getDefaultCalendar

function testCalendar() { 
  
  var sh = SpreadsheetApp.getActiveSheet()
  var start = new Date(sh.getRange('A1').getValue()).getTime()
  var end = new Date(sh.getRange('A2').getValue()).getTime()

  var calendName = CalendarApp.getCalendarsByName('alertes');
  var calendById = CalendarApp.getCalendarById('a2j9469bvfr93ob9bbottd0v80@group.calendar.google.com')
  var calend = CalendarApp.getDefaultCalendar()

  calendName[0].createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0); 
  calendById.createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0);   
  calend.createEvent('test script createEvent', new Date(start), new Date(end)).addSmsReminder(0);   

}

所以,我建议您尝试

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById("c_v6h2ud0dru0dqojch3103sue20@group.calendar.google.com");
  var name = spreadsheet.getRange('U69').getValue();
  var start = new Date(spreadsheet.getRange('U70').getValue()).getTime();
  var end =  new Date(spreadsheet.getRange('X69').getValue()).getTime();
  eventCal.createEvent(name,new Date(start),new Date(end));
  Logger.log('Reminder is added to your calendar');
}

585