如何使用People API(Python库)添加/删除Google联系人标签?
通过Google People API Python库管理联系人标签
添加标签
要给联系人添加标签,本质是将联系人加入对应的联系人组。如果标签(组)已存在,直接关联联系人;如果是新标签,需要先创建组。
1. 给已有联系人添加现有标签
使用people().updateContact方法,通过修改联系人的memberships字段关联目标组,示例代码:
from googleapiclient.discovery import build from google.oauth2.credentials import Credentials # 初始化API客户端 creds = Credentials.from_authorized_user_file('token.json', ['https://www.googleapis.com/auth/contacts']) service = build('people', 'v1', credentials=creds) # 目标联系人ID(格式为people/{person_id},可通过listContacts接口获取) contact_id = 'people/1234567890' # 目标标签组ID(格式为contactGroups/{group_id},可通过contactGroups.list接口获取) group_id = 'contactGroups/abc123' # 获取当前联系人的成员关系信息 contact = service.people().get(resourceName=contact_id, personFields='memberships').execute() # 避免重复添加标签 existing_groups = [m['contactGroupMembership']['contactGroupResourceName'] for m in contact.get('memberships', [])] if group_id not in existing_groups: contact['memberships'].append({ 'contactGroupMembership': { 'contactGroupResourceName': group_id } }) # 更新联系人信息 service.people().updateContact( resourceName=contact_id, body=contact, updatePersonFields='memberships' ).execute() print(f"已添加标签: {group_id}")
2. 创建新标签并关联联系人
如果需要新增标签,先调用contactGroups().create创建组,再关联联系人:
# 创建新标签组 new_group = service.contactGroups().create(body={ 'contactGroup': { 'name': '重要客户' # 自定义标签名称 } }).execute() new_group_id = new_group['resourceName'] # 将联系人关联到新标签组 contact['memberships'].append({ 'contactGroupMembership': { 'contactGroupResourceName': new_group_id } }) service.people().updateContact( resourceName=contact_id, body=contact, updatePersonFields='memberships' ).execute() print(f"已创建并添加新标签: {new_group['name']}")
删除标签
删除标签就是将联系人从对应组中移除,通过people().updateContact过滤掉目标组的成员关系即可:
# 获取当前联系人的成员关系 contact = service.people().get(resourceName=contact_id, personFields='memberships').execute() memberships = contact.get('memberships', []) # 过滤掉要删除的标签组 updated_memberships = [ m for m in memberships if m['contactGroupMembership']['contactGroupResourceName'] != group_id ] # 更新联系人的成员关系 contact['memberships'] = updated_memberships service.people().updateContact( resourceName=contact_id, body=contact, updatePersonFields='memberships' ).execute() print(f"已删除标签: {group_id}")
关键注意事项
- 权限:确保OAuth 2.0凭据包含
https://www.googleapis.com/auth/contacts读写权限。 - ID格式:联系人ID为
people/{person_id},标签组ID为contactGroups/{group_id},可分别通过people().listContacts和contactGroups().list接口获取。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

