在Google Apps脚本日历活动中创建与会者的动态列表

时间:2019-01-24 15:04:34

标签: javascript google-apps-script

尝试将逗号分隔的电子邮件地址列表添加到Google Apps脚本中,以便通过电子邮件将发生新日历事件的人员发送给这些人。

似乎我可以使用以下格式静态包含电子邮件

attendees: [
  {email: 'alice@example.com'},
  {email: 'bob@example.com'}
],

但是我不知道如何获取一个csv字符串并将这些条目转换为电子邮件地址列表。

var calId = 'xxxx@resource.calendar.google.com';
  var event = {
    sendNotifications: true,
    sendUpdates: "all",
    summary: summary, 
    start: {
      date: eventDate
    },
    end: {
      date: eventDate
    }
  };

  var adds = response.getResponseText();
  if( adds.length > 0 ){
    //Create Mail List
    var addresses = adds.split(',');
    for( var i=0; i < addresses.length; i++){
      var addee=addresses[i].trim();
      Logger.log(addee);
      event.attendees.push( "email: "+addee);
    }
  event = Calendar.Events.insert( event, calId, {sendNotifications: true} 
);

2 个答案:

答案 0 :(得分:0)

在我看来,您的问题可能来自:

event.attendees = new List<EventAttendee>();
...
event.attendees.email=addee;

据我了解,该数组将为空,可能无法以这种方式添加电子邮件...我没有尝试过,但是这段代码看起来更好:

    ArrayList<EventAttendee> attendees = new ArrayList<EventAttendee>();
...
    attendees.add(new EventAttendee().setEmail(addee)); // in the loop
...
    event.setAttendees(attendees);

答案 1 :(得分:0)

我知道已经很晚了,但是也许答案可以帮助其他人。 您需要做两件事: 1.您需要将参与者添加为“事件”内的属性ID,以便当您尝试推送元素时,它不会说“未定义”。像这样:

var event = {
summary: subject,
location: dir,
description: (part1+'\n'+part2linebreak),
start: {
  dateTime: start.toISOString()
},
end: {
  dateTime: end.toISOString()
},
attendees: [

  ],
// Red background. Use Calendar.Colors.get() for the full list.
colorId: 11
};

与会者已创建,但为空。

2。现在,我们将数据输入“与会者”,如下所示:

for(var i=0; i<mailist.length; i++){
event.attendees.push({email: mailist[i]});
}

至少我是怎么做到的:) 还sendUpdates:“全部”或sendNotifications:true,超出事件范围,例如:

event = Calendar.Events.insert(event, calid,{senUpdates: "all"});

欢呼