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

通过Google表格resourceName删除Google联系人失败求助

问题分析与解决方案

核心问题点

  • 搜索联系人时未正确读取API返回的联系人列表,且未请求resourceName字段,导致无法匹配目标资源
  • 删除联系人的API调用参数格式错误
  • 函数名拼写错误(deleteContactPersoon应为deleteContactPerson)
  • 固定读取第2行数据,不符合“选择特定resourceName”的需求

修正后的完整代码

function deletePerson() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 获取当前选中单元格的resourceName,支持选择任意行的目标数据
  var activeCell = sheet.getActiveCell();
  var resourceName = activeCell.getValue();

  if (!resourceName) {
    Browser.msgBox('错误', '请先选中包含有效resourceName的单元格', Browser.Buttons.OK);
    return;
  }

  // 搜索目标联系人
  var contactPerson = searchContactPerson(resourceName);

  if (contactPerson) {
    var unstructuredName = contactPerson.names[0].unstructuredName;
    // 调用正确的删除函数名
    deleteContactPerson(contactPerson.resourceName);
    
    Browser.msgBox('成功', `姓名为"${unstructuredName}"的联系人已删除`, Browser.Buttons.OK);
  } else {
    Browser.msgBox('失败', `resourceName为"${resourceName}"的联系人不存在`, Browser.Buttons.OK);
  }
}

// 根据resourceName查找联系人
function searchContactPerson(resourceName) {
  // 请求时必须包含resourceName字段,同时获取姓名用于提示
  var response = People.People.Connections.list('people/me', {
    personFields: 'names,resourceName'
  });
  
  // 正确遍历API返回的connections数组
  var contacts = response.connections || [];
  for (var i = 0; i < contacts.length; i++) {
    if (contacts[i].resourceName === resourceName) {
      return contacts[i];
    }
  }
  return null;
}

// 删除指定resourceName的联系人
function deleteContactPerson(resourceName) {
  // API需要两个参数:当前用户标识(people/me)和要删除的联系人resourceName
  People.People.Connections.deleteContact('people/me', resourceName);
}

关键修正说明

  1. 修复搜索逻辑:
    • API返回的联系人列表在response.connections中,原代码直接遍历了响应对象而非数组
    • 在personFields中添加resourceName,确保返回的联系人对象包含该字段用于匹配
  2. 修正删除API调用:
    • deleteContact方法需要传入两个参数:'people/me'(当前用户)和目标联系人的resourceName,原代码仅传入了一个参数
  3. 优化用户交互:
    • 改为读取当前选中单元格的内容,支持选择任意行的resourceName,符合需求中的“选择特定resourceName”
    • 增加空值判断,避免无效操作
  4. 修正函数名拼写:将调用的deleteContactPersoon改为正确的deleteContactPerson

内容的提问来源于stack exchange,提问作者M. Atou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:50:25