Google Apps Script无法移动其他联系人至系统组,求组名正确写法
解决Google Apps Script无法移动「其他联系人」到「我的联系人」的问题
我之前也碰到过一模一样的问题!你推测的方向完全正确——问题就出在「其他联系人」这个系统组的获取方式上,它属于Google通讯录的特殊系统组,没法直接通过普通的名称字符串来获取,必须用专门的API方法。
问题分析
你原来的代码里用ContactsApp.getContactGroup('Other Contacts')尝试获取「其他联系人」组,但这个方法只能获取你手动创建的联系人组,或者部分有标准命名的系统组。而「其他联系人」是一个特殊的隐藏系统组,必须用ContactsApp.getOtherContactsGroup()这个专属方法来获取,否则返回的会是null,自然无法遍历到任何联系人。
修正后的完整代码
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 替换成专门的方法获取「其他联系人」组 var otherContactsGroup = ContactsApp.getOtherContactsGroup(); var contacts = ContactsApp.getContactsByGroup(otherContactsGroup); var mainGroup = ContactsApp.getContactGroup("System Group: My Contacts"); // 遍历并添加联系人到「我的联系人」组 for (var i = 0; i < contacts.length; i++) { mainGroup.addContact(contacts[i]); }
额外提示
- 如果你想验证组是否正确获取,可以在代码里添加日志:
Logger.log(otherContactsGroup.getName()),执行后查看日志,会显示当前语言环境下的组名称(比如中文环境会显示「其他联系人」)。 - 注意
for (var i in contacts)这种遍历方式可能会遍历到数组的额外属性,建议改用标准的for循环或者forEach来遍历联系人数组,避免潜在问题。
内容的提问来源于stack exchange,提问作者BarkBark
相关产品推荐
相关产品推荐

