如何从联系人电话字段获取国家代码?GAS ContactsApp相关技术咨询
从Google Contacts获取电话号码的国家代码/国际格式
刚好碰到过类似的困扰,我来给你分享两个实用的解决方案:
方案一:用ContactsApp的原生方法(简单直接)
你提到的ContactsApp.contact.getPhoneNumber()确实只会返回不带国家代码的原始号码,但其实ContactsApp提供了更细致的PhoneNumber对象,能直接拿到国家代码和国际格式号码。
关键是不要直接用getPhoneNumber(),而是用getPhoneNumbers()获取所有电话条目,然后对每个条目调用对应的方法:
function extractContactCountryCode() { // 替换成你要查询的联系人姓名或其他标识 const targetContact = ContactsApp.getContactsByName("AlexV")[0]; if (!targetContact) { console.log("未找到目标联系人"); return; } // 获取该联系人的所有电话条目 const phoneEntries = targetContact.getPhoneNumbers(); phoneEntries.forEach(entry => { console.log(`号码类型: ${entry.getLabel()}`); console.log(`国家代码: ${entry.getCountryCode()}`); // 比如 "+86"、"+1" console.log(`国际格式号码: ${entry.getInternationalFormat()}`); // 比如 "+86 138xxxx1234" console.log(`原始输入号码: ${entry.getPhoneNumber()}`); // 不带国家代码的原始号码 }); }
这里的getCountryCode()会直接返回带"+"号的国家代码,getInternationalFormat()则返回完整的国际标准格式号码,完全满足你的需求。
方案二:使用Google People API(更灵活强大)
如果ContactsApp的方法在某些特殊场景下失效(比如旧联系人的国家代码未被正确识别),可以试试Google People API——它是Google官方推荐的更现代的联系人管理API,能获取更丰富的元数据。
步骤1:启用People API
在Google Apps Script编辑器中:
- 点击顶部菜单栏的「资源」→「高级Google服务」
- 找到「People API」,勾选启用,然后点击「确定」
步骤2:编写代码获取信息
function getContactDetailsViaPeopleAPI() { const searchName = "AlexV"; // 搜索联系人,指定只获取电话号码字段 const searchResult = People.People.searchContacts({ query: searchName, readMask: "phoneNumbers" }); const contacts = searchResult.results; if (!contacts || contacts.length === 0) { console.log("未找到匹配的联系人"); return; } contacts.forEach(contact => { const phoneNumbers = contact.person.phoneNumbers; if (phoneNumbers) { phoneNumbers.forEach(phone => { console.log(`号码类型: ${phone.type}`); console.log(`国际格式号码: ${phone.value}`); // 直接包含国家代码 console.log(`国家代码提取: ${phone.value.split(" ")[0]}`); // 从国际号码中拆分国家代码 }); } }); }
People API返回的phone.value本身就是国际格式的号码,直接包含国家代码,你也可以通过字符串拆分的方式单独提取国家代码部分。
内容的提问来源于stack exchange,提问作者AlexV
相关产品推荐
相关产品推荐

