使用 ContactsApp 获取电子邮件地址
Using ContactsApp to get email addresses
我正在开发一个 Google Apps 脚本,当学生的名字被选为出勤通知(停学、实地考察等)时,它会通知学生的老师。我尝试使用 ContactsApp
从 Google 应用程序目录获取教师信息,但根据 Google Apps Script - ContactsApp - Directory search,该目录无法通过 class.
作为概念证明,我将目录中的一些联系人添加到我自己的库中,这样我就可以从脚本中访问信息。但是,当我使用他们的姓名、电子邮件地址……任何东西搜索用户时,实际上,我得到一个空的或 null
return。我什至将其缩减为硬编码查询(而不是变量),看看我是否可以得到 return.
的任何内容
function testing() {
var user = ContactsApp.getContactsByEmailAddress('user@elkhart.k12.in.us');
for(var i in user) {
Logger.log(user[i].getGivenName());
}
}
输入一个有效的电子邮件地址——甚至是我自己的——return一个空的日志条目。关于这是否只是脚本中的挑剔 Class 或者我是否以错误的方式接近它有什么想法吗?
由于您正在寻找一种可以从一般域用户帐户 运行 获得的解决方案,因此您最好避免依赖 Admin SDK。只要您将必要的用户添加到您的联系人(或您打算从中 运行 您的脚本的任何帐户的联系人),就可以了。
你的代码对我有用;我能够从我自己的消费者帐户的联系人中找到用户匹配项。因此,值得深入研究您的源数据;例如,您的联系人内容可能只是错别字。
我在这里修改了您的 testing()
函数以转储有关您的联系人内容的信息,并最终查找共享您域的所有联系人,例如elkhart.k12.in.us
。 (或者 gmail.com
对于消费者帐户。)它会记录一些额外的信息,这些信息可能有助于查明源数据的问题。
/**
* Get info about my contacts.
*
* @returns Contact[] Array of contacts in same domain as user.
*
* Adapted from //whosebug.com/questions/32477736
*/
function getContactsInfo() {
// Get all my contacts, just to validate the number.
var contacts = ContactsApp.getContacts();
Logger.log("Total contacts: %s",contacts.length.toString());
// Get info about my Contact groups (includes System Groups)
var myGroups = ContactsApp.getContactGroups();
Logger.log("Contact Groups (%s): %s",
myGroups.length.toString(),
myGroups.map(function(group){ // from //whosebug.com/a/16607599/1677912
return group.getName();
}).join());
// Get my domain from my email (from //whosebug.com/a/5181776/1677912)
var myDomain = Session.getActiveUser().getEmail().split("@")[1];
Logger.log("My domain: %s", myDomain);
// Get all domain users in my contacts
var users = ContactsApp.getContactsByEmailAddress(myDomain);
Logger.log("Matches in domain: %s",users.length.toString());
for(var i=0; i<users.length; i++) {
Logger.log(users[i].getGivenName());
}
return users;
}
我遇到了类似的问题。我有一个表格,可以将联系人输入 google 帐户。当我填写表格时,绑定到表格电子表格的 Google Apps 脚本将新的联系信息输入到我的个人帐户中。测试了Mogsdad的功能后,我发现问题出在我要添加联系人的账户中,需要重新审核权限并授权。执行此操作后,脚本将停止添加到我的个人联系人并将联系人添加到正确的帐户。
我正在开发一个 Google Apps 脚本,当学生的名字被选为出勤通知(停学、实地考察等)时,它会通知学生的老师。我尝试使用 ContactsApp
从 Google 应用程序目录获取教师信息,但根据 Google Apps Script - ContactsApp - Directory search,该目录无法通过 class.
作为概念证明,我将目录中的一些联系人添加到我自己的库中,这样我就可以从脚本中访问信息。但是,当我使用他们的姓名、电子邮件地址……任何东西搜索用户时,实际上,我得到一个空的或 null
return。我什至将其缩减为硬编码查询(而不是变量),看看我是否可以得到 return.
function testing() {
var user = ContactsApp.getContactsByEmailAddress('user@elkhart.k12.in.us');
for(var i in user) {
Logger.log(user[i].getGivenName());
}
}
输入一个有效的电子邮件地址——甚至是我自己的——return一个空的日志条目。关于这是否只是脚本中的挑剔 Class 或者我是否以错误的方式接近它有什么想法吗?
由于您正在寻找一种可以从一般域用户帐户 运行 获得的解决方案,因此您最好避免依赖 Admin SDK。只要您将必要的用户添加到您的联系人(或您打算从中 运行 您的脚本的任何帐户的联系人),就可以了。
你的代码对我有用;我能够从我自己的消费者帐户的联系人中找到用户匹配项。因此,值得深入研究您的源数据;例如,您的联系人内容可能只是错别字。
我在这里修改了您的 testing()
函数以转储有关您的联系人内容的信息,并最终查找共享您域的所有联系人,例如elkhart.k12.in.us
。 (或者 gmail.com
对于消费者帐户。)它会记录一些额外的信息,这些信息可能有助于查明源数据的问题。
/**
* Get info about my contacts.
*
* @returns Contact[] Array of contacts in same domain as user.
*
* Adapted from //whosebug.com/questions/32477736
*/
function getContactsInfo() {
// Get all my contacts, just to validate the number.
var contacts = ContactsApp.getContacts();
Logger.log("Total contacts: %s",contacts.length.toString());
// Get info about my Contact groups (includes System Groups)
var myGroups = ContactsApp.getContactGroups();
Logger.log("Contact Groups (%s): %s",
myGroups.length.toString(),
myGroups.map(function(group){ // from //whosebug.com/a/16607599/1677912
return group.getName();
}).join());
// Get my domain from my email (from //whosebug.com/a/5181776/1677912)
var myDomain = Session.getActiveUser().getEmail().split("@")[1];
Logger.log("My domain: %s", myDomain);
// Get all domain users in my contacts
var users = ContactsApp.getContactsByEmailAddress(myDomain);
Logger.log("Matches in domain: %s",users.length.toString());
for(var i=0; i<users.length; i++) {
Logger.log(users[i].getGivenName());
}
return users;
}
我遇到了类似的问题。我有一个表格,可以将联系人输入 google 帐户。当我填写表格时,绑定到表格电子表格的 Google Apps 脚本将新的联系信息输入到我的个人帐户中。测试了Mogsdad的功能后,我发现问题出在我要添加联系人的账户中,需要重新审核权限并授权。执行此操作后,脚本将停止添加到我的个人联系人并将联系人添加到正确的帐户。