You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从联系人电话字段获取国家代码?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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:34:10