我刚开始使用Google Apps脚本进行编码。
我尝试编写一个简单的程序,从我的日历中提取事件,并通过电子邮件发送给所有来宾。
我遇到了两个问题:
getName()方法返回访客的电子邮件地址而不是姓名,即使该名称是在我的Google通讯录中定义的。 (另外,如果没有定义名称,根据文档,它将返回null)。
我似乎无法使用getCalendarsByName方法。 getCalendarByID工作正常,但getCalendarsByName方法不返回所需的日历。我也尝试了getOwnedCalendarsByName,但这也不起作用。
感谢任何人的帮助。
7/1 3.30pm更新:感谢@Serge insas,第二个问题已经解决。 但是,第一个问题仍然存在。这是代码:
function myFunction() {
var calendar = CalendarApp.getCalendarsByName('Test Calendar');
Logger.log(calendar[0].getName());
var today = new Date(); // get today's date
Logger.log(today.toLocaleString());
var endDate = new Date();
endDate.setDate(today.getDate() +7); // set nextWeek's date to 7 days from today
Logger.log(endDate.toLocaleString());
var testEvents = calendar[0].getEvents(today, endDate);
Logger.log(testEvents[0].getTitle());
var guests = testEvents[0].getGuestList();
Logger.log(guests[0].getName());
}
这是日志输出:
Test Calendar
July 1, 2012 3:27:58 PM EDT
July 8, 2012 3:27:58 PM EDT
Test Event 1
duytri.nguyen07@gmail.com
最后一行是我的电子邮件其他电子邮件地址,即使它已在我的联系人中命名。
答案 0 :(得分:0)
方法getCalendarsByName()
返回一个数组(这就是日历上有's'的原因),您是否在代码中考虑了这一点,在其后面添加[0](假设您只有一个Cal这个名字或你想要它的第一次出现?)
如果您提供正在使用的代码,将会更容易为您提供帮助。
(关于guestName,相同的评论:请提供您正在使用的代码。)
编辑:感谢您的代码。看起来你是对的,看起来像个问题; - /
由于访客必须在联系人列表中才能获得他的名字,我想您可以使用联系服务获取访客姓名...作为解决方法......我会尽力让您知道。 ..
这应该可行,但是 - 我不知道为什么 - 它没有任何结果而挂起......也许你可以尝试一下?
var testEvents = calendar[0].getEvents(today, endDate);
Logger.log(testEvents[0].getTitle());
var guests = testEvents[0].getGuestList();
var guestmail = guests[0].getEmail();
Logger.log(guestmail);
var contact = ContactsApp.getContact(guestmail);
var name = contact.getFullName();
Logger.log(guestmail+' '+name);
答案 1 :(得分:0)
ContactsApp
很棘手,它只能在用户运行脚本的联系人中搜索,而不能在全局脚本中搜索。在管理员帐户中仍然无法访问全局联系人列表。