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

如何修改Google Apps Script仅导入「我的联系人」至Google Sheets两列?

解决Google Apps Script获取「我的联系人」并拆分姓名到表格的问题

问题根源

直接调用ContactApp.getContactGroup('My Contacts')失效,是因为Google账户的系统默认分组「我的联系人」名称会随语言环境变化——中文环境下实际分组名称是「我的联系人」而非英文"My Contacts",用错名称自然无法获取到目标分组。

修复后的完整脚本

function importContacts() {
  // 用系统分组ID「myContacts」获取「我的联系人」,不受语言环境影响
  var contactGroup = ContactApp.getContactGroup("myContacts");
  // 兼容部分特殊环境,ID获取失败时尝试中文名称
  if (!contactGroup) {
    contactGroup = ContactApp.getContactGroup("我的联系人");
  }
  
  var contacts = contactGroup.getContacts();
  var output = [];

  for (var i = 0; i < contacts.length; i++) {
    var contact = contacts[i];
    // 分别提取姓氏和名字
    var familyName = contact.getFamilyName();
    var givenName = contact.getGivenName();
    
    // 确保至少有一项名称存在再添加到输出数组
    if (familyName || givenName) {
      output.push([familyName || "", givenName || ""]);
    }
  }

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Contacts list");
  // 清空原有数据(避免重复导入)
  sheet.clearContents();
  // 将数据写入表格,姓氏在A列,名字在B列
  if (output.length > 0) {
    sheet.getRange(1, 1, output.length, 2).setValues(output);
  }
}

核心优化说明

  • 优先使用系统分组ID myContacts 获取目标分组,彻底避免语言环境导致的名称不匹配问题
  • 增加中文名称的 fallback 逻辑,兼容特殊场景
  • 改用getFamilyName()和getGivenName()拆分姓名,分别对应表格的两列
  • 加入清空旧数据的逻辑,防止多次运行后数据重复
  • 处理姓名项为空的情况,避免表格出现无效空行

内容的提问来源于stack exchange,提问作者horsefish

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:35:21