如何在Google Apps Script中通过People API创建新联系人分组
Google Apps Script 借助People API创建联系人分组的实现方法
现有代码的问题
- 查找分组返回
null时,直接调用People.ContactGroups.get(null)会触发接口报错,无法执行后续的创建逻辑 People.ContactGroups.create方法不能直接传入字符串作为参数,需要构造符合规范的请求体结构
前置准备
使用前需要先在Google Apps Script编辑器中启用People API:点击顶部菜单「扩展」→「Apps Script API」,找到People API后开启对应权限即可。
修正后完整代码
function findContactGroupId(groupName) { // 只查询用户自定义分组,过滤系统内置分组,不需要可直接删除list方法的入参 const allContactGroups = People.ContactGroups.list({groupType: 'USER_CONTACT_GROUP'}); if (!allContactGroups.contactGroups) return null; for (let i = 0; i < allContactGroups.contactGroups.length; i++) { const group = allContactGroups.contactGroups[i]; if (group.name === groupName) { return group.resourceName; } } return null; } function somefunc() { const contactGroupName = "foo"; const contactGroupResourceName = findContactGroupId(contactGroupName); Logger.log("got resource id: %s", contactGroupResourceName); let contactGroup; if (contactGroupResourceName) { // 仅当分组存在时调用get方法获取详情 contactGroup = People.ContactGroups.get(contactGroupResourceName); } else { // 构造符合People API要求的创建请求参数 contactGroup = People.ContactGroups.create({ contactGroup: { name: contactGroupName } }); Logger.log("Contact Group %s created", contactGroup.name); } }
关键修改说明
- 移除了原代码中会触发报错的空值
get调用,仅当查找函数返回有效资源ID时才调用接口查询分组详情 - 创建分组的请求体按照
CreateContactGroupRequest规范构造,内层contactGroup字段指定分组名称 - 新增
groupType参数过滤系统内置分组,减少无效遍历,不需要该逻辑可直接删除list方法的入参 - 所有变量添加声明符,避免全局变量污染
内容的提问来源于stack exchange,提问作者Chris W.
相关产品推荐
相关产品推荐

