Warm tip: This article is reproduced from serverfault.com, please click

其他-尝试将电子表格脚本中的来宾添加到Calendar App

(其他 - Trying to add Guests in Spreadsheet Script to Calendar App)

发布于 2020-12-02 16:56:35

我正在尝试在“选项”中添加来宾,以自动将Google表格中的时间表添加到日历中。我看过视频(当其他人问这个问题时,它不会讨论这个问题,也不会导致任何答案),而且我对了解CalendarApp信息的帮助还不够了解。有人可以帮忙吗?(仅供参考,我每次运行时也希望停止重复事件),这是我的脚本:

function addEvents(){
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var lr = ss.getLastRow();
    var cal = CalendarApp.getCalendarById("c_kdaqhj8lkd7u68s8thinbnjpik@group.calendar.google.com");

    var events = cal.getEvents(new Date ("02/8/2019 12:00 AM"), new Date("02/28/2019 11:59 PM"));

    for (var i=0;i<events.length;i++){
        var ev = events[i];
        ev.deleteEvent();  
        }

    var data = ss.getRange("A2:F"+ lr).getValues();

    for(var i = 0;i<data.length;i++){

        cal.createEvent(data[i][0], data[i][1], data[i][2], guests:"data[i][3]", "data[i][4]", {description:data[i][5]});

    }
}
Questioner
D Clark
Viewed
0
18.7k 2020-12-30 06:00:30

你的主要问题是你没有将其包含guests在与description相同的JavaScript对象中,并且该guests字符串必须是包含逗号分隔值的字符串。以下脚本具有自我解释的注释,还检查在尝试插入事件的日期和时间是否已经存在事件,以避免重复事件:

function addEvents(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow();
  var cal = CalendarApp.getCalendarById("YOURCALENDARID");
  
  var data = ss.getRange("A2:F"+ lr).getValues();
  
  for(var i = 0;i<data.length;i++){
    // According to the documentation if no event was found on those date times it will return null
    // However if you delete an event this will return an empty array so we also have to check against that
    if(cal.getEvents(data[i][1], data[i][2])==null || cal.getEvents(data[i][1], data[i][2]).length==0 ){
      // Options must be a Javascript object and specifically the paramter guests is a string so your data must be integrated
      // in such a string
      cal.createEvent(data[i][0], data[i][1], data[i][2],{guests: ''+data[i][3]+','+data[i][4]+'', description:data[i][5]});
    }
    
  }
}

参考