繁体   English   中英

在 Google Apps Script 日历活动中创建动态参与者列表

[英]Create dynamic list of attendees in Google Apps Script calendar event

尝试将逗号分隔的电子邮件地址列表添加到 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} 
);

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

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. 您需要在“事件”中添加参与者作为属性 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: "all" 或 sendNotifications: true 去事件之外,像这样:

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

干杯

暂无
暂无

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

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