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

使用Google App Script调用People API updateContact()遇404错误求助

解决Google App Script更新联系人时的404错误

核心错误分析

  • 参数传递错误:调用People.People.updateContact时,第二个参数误用了resource.resourceName——你的resource对象未定义该属性,导致请求指向不存在的资源路径,直接触发404。正确参数应为从表格读取的resourceName变量。
  • etag格式错误:People API要求etag是单个字符串值,你代码里将其定义为数组etag: []再push值,不符合API规范,会导致请求结构异常。
  • 缺少更新字段掩码:调用updateContact必须指定updatePersonFields参数,明确要更新的字段,否则即使解决404,API也会拒绝请求。

修正步骤及代码

  1. 先在Google App Script编辑器中启用People API:菜单→资源→高级Google服务→找到People API并开启。
  2. 修正参数传递、etag格式,添加字段掩码参数。

修正后的完整代码:

function updateContactsFromSheet() {
  var sheetId = '[SheetID]';
  var sheetName = '[SheetName]';

  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();

  var headerRow = data[0];
  var emailColumnIndex = headerRow.indexOf('Email');
  var firstNameColumnIndex = headerRow.indexOf('First Name');
  var middleNameColumnIndex = headerRow.indexOf('Middle Name');
  var lastNameColumnIndex = headerRow.indexOf('Last Name');
  var phoneColumnIndex = headerRow.indexOf('Mobile');
  var resourceNameColumnIndex = headerRow.indexOf('resourceName');
  var etagColumnIndex = headerRow.indexOf('etag');


  for (var i = 1; i < data.length; i++) {
    var row = data[i];
    var email = row[emailColumnIndex];
    var firstName = row[firstNameColumnIndex];
    var middleName = row[middleNameColumnIndex];
    var lastName = row[lastNameColumnIndex];
    var phone = row[phoneColumnIndex];
    var resourceName = row[resourceNameColumnIndex];
    var etag = row[etagColumnIndex];

    if(resourceName !== ''){
      var resource = {
        names: [{
          givenName: firstName,
          middleName: middleName,
          familyName: lastName
        }],
        emailAddresses: [{ value: email }],
        phoneNumbers: [{ value: phone }],
        etag: etag
      };

      People.People.updateContact(resource, resourceName, {
        updatePersonFields: 'names,emailAddresses,phoneNumbers'
      });
    }
  }
}

额外注意事项

  • 表格中的resourceName和etag必须是从People API获取的有效值(可通过People.People.listContacts批量导出到表格),手动填写无效值仍会触发404。
  • 建议先单条数据调试,确认无误后再批量执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:42:09