google-people-api - Google Apps Script Google People API 从联系人组中获取联系人
问题描述
我有一个脚本(使用 Google Apps 脚本),它使用联系人 API 从联系人组中提取电子邮件,然后向联系人组发送电子邮件。尝试转换为 PeopleAPI 并且似乎无法复制该功能。这是相关的脚本示例,其中包含但已注释掉的工作 ContactsAPI 代码:
function sharereport() {
//var CGroup = ContactsApp.getContactGroup('group_name');
//var Dist = CGroup.getContacts();
var CGroup = People.ContactGroups.get('contactGroups/498ba6e40f63a476')
var Dist = People.People.getBatchGet('CGroup','people.email_addresses');
. . .
for (var i = 0; i < Dist.length; i++) {
var nextemail = Dist[i].getEmails();
var usethisemail = nextemail[0].getAddress();
Drive.Permissions.insert(
// @ts-ignore
{
'role': 'writer',
'type': 'user',
'value': usethisemail,
},
MyID,
{
'sendNotificationEmails': 'false',
});
MailString = MailString + ',' + usethisemail;
};
我确定我在这里遗漏了一些非常简单的东西,让 PeopleAPI 返回一组联系人,我可以从中获取电子邮件地址,以便我可以填充驱动器权限和电子邮件至:字段。
解决方案
由于我没有找到任何直接获取它们的方法,因此我确实使用People.People.Connections.list
并过滤了数据,直到收到电子邮件。这应该是您的代码的样子。
function sharereport() {
var CGroup = ContactsApp.getContactGroup('label1');
var Emails = CGroup.getContacts().map(function (contact) {
return contact.getEmailAddresses();
});
// Show emails of people belonging to the group label1
Logger.log(Emails);
var PGroup = People.People.Connections.list('people/me', {
personFields: 'emailAddresses,memberships'
});
// resource name of label1
var resourceName = 'contactGroups/7086c0fa8e7b006b';
var Emails2 = [];
PGroup.connections.forEach(function (person) {
person.memberships.forEach(function (membership) {
if (resourceName == membership.contactGroupMembership.contactGroupResourceName) {
var addresses = [];
person.emailAddresses.forEach(function (emailAddress){
// people can have multiple email addresses, add them all
addresses.push(emailAddress.value);
});
Emails2.push(addresses);
}
});
});
Logger.log(Emails2);
}
行为:
- 得到你手下的所有人脉关系。
- 获得他们所有的会员资格
- 检查他们的会员资源名称是否与您想要的相同。(他们可以属于多个成员)
- 循环该特定人的所有电子邮件(他们可以有多个电子邮件),然后推入一个数组。
- 将该数组推入包含属于该资源名称的所有人的所有电子邮件的最终数组。
输出:
- 记录了两者
ContactsApp
和People
API 结果,下面显示它们是相同的。
资源:
推荐阅读
- nuget - 如何从 nuget 服务器获取包列表?
- gulp - 为什么在构建项目时会出现问题?
- compiler-errors - 使用单个组件进行故障处理的 2:1 MUX 编译错误
- python - 如何编写一个需要一行并返回二维元组列表的函数
- firebase - 在 Firestore 中以“属于”和“拥有”的关系构建数据
- agora.io - Agora 控制台 - 应用的钥匙图标灰显 - 无法生成临时令牌
- java - 如何在Java中将参数从一个类传递给另一个类?
- mysql - 我该怎么做才能使这个 MySQL 查询更快(<1s 响应)
- python - python xml.etree 条件崩溃 (FreeCAD/console)
- xamarin - 有没有办法让 shell 项目中的 Android 和 iOS 的底部标签栏高度变为零?