EventGuest getName()方法不起作用

时间:2012-07-01 18:45:25

标签: google-apps-script

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

我尝试编写一个简单的程序,从我的日历中提取事件,并通过电子邮件发送给所有来宾。

我遇到了两个问题:

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

  2. 我似乎无法使用getCalendarsByName方法。 getCalendarByID工作正常,但getCalendarsByName方法不返回所需的日历。我也尝试了getOwnedCalendarsByName,但这也不起作用。

  3. 感谢任何人的帮助。

    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
    

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

2 个答案:

答案 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很棘手,它只能在用户运行脚本的联系人中搜索,而不能在全局脚本中搜索。在管理员帐户中仍然无法访问全局联系人列表。