1

我刚开始使用 Google Apps Script 进行编码。

我尝试编写一个简单的程序来从我的日历中提取事件并向这些事件中的所有客人发送电子邮件。

我遇到了2个问题:

  1. getName() 方法返回客人的电子邮件地址而不是姓名,即使该姓名是在我的 Google 联系人中定义的。(此外,如果没有定义名称,根据文档,它将返回 null)。

  2. 我似乎无法使用 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

最后一行是我的电子邮件其他电子邮件地址,即使它已在我的联系人中命名。

4

2 回答 2

0

该方法getCalendarsByName()返回一个数组(这就是日历上有一个“s”的原因),您是否在代码中通过在其后面添加 [0] 来考虑这一点(假设您只有一个具有此名称的 Cal 或者您想要它的第一个发生) ?

如果您提供一些您正在使用的代码,会更容易为您提供帮助。

(关于客人姓名,同样的评论:请提供您正在使用的代码。)

编辑:感谢您的代码。看来您是对的,这似乎是一个问题;-/

因为客人必须在联系人列表中才能获得他的名字我想你可以使用联系服务来获取客人的名字......作为一种解决方法......我会试着让你知道......

这应该可以,但是-我不知道为什么-它挂起而没有任何结果...也许您可以尝试一下?

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);
于 2012-07-01T19:09:48.947 回答
0

ContactsApp很棘手,它只能在用户运行脚本的联系人中搜索,而不是在全局联系人中搜索。在管理员帐户中仍然无法访问全局联系人列表。

于 2012-09-26T11:35:56.957 回答