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

使用Google Sheets数据创建联系人时遇GoogleJsonResponseException错误求助

解决Google Contacts批量创建API错误问题

你遇到的错误是因为代码里的contacts数组包含了空对象,API要求每个联系人必须有至少一个非元数据字段(比如姓名、邮箱),空对象不符合这个校验规则。

错误原因

看代码里的obj结构,contacts数组在第一个联系人对象后加了三个多余的逗号:

contacts: [
    {
      contactPerson: {
        emailAddresses: [{ value: email }],
        names: [
          { familyName: lastName, givenName: firstName },
        ],
      },
    },
    ,
    ,
    ,
  ],

这些逗号会生成三个空的联系人对象,API处理时就会抛出Must specify a non-metadata contact field on the person错误。

修正后的代码

删掉多余的逗号,确保contacts数组里只有当前要创建的联系人对象:

function newContact () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Contacts");
  var data = sheet.getDataRange().getValues(); 

  for (var i = 1; i < data.length; i++) {    
   
   var lastName = data[i][0];       
   var firstName = data[i][1];
   var email = data[i][12]; 
   
    const obj = {
      contacts: [
        {
          contactPerson: {
            emailAddresses: [{ value: email }],
            names: [
              { familyName: lastName, givenName: firstName },
            ],
          },
        }
      ],
      readMask: "emailAddresses,names",
    };

    const res = People.People.batchCreateContacts(obj);
    console.log(res);
  }
}

额外优化建议

当前代码循环一次创建一个联系人,效率偏低。可以把所有联系人收集到数组后批量调用API,减少请求次数:

function newContact () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Contacts");
  var data = sheet.getDataRange().getValues(); 
  const contactsList = [];

  // 收集所有待创建的联系人
  for (var i = 1; i < data.length; i++) {    
    var lastName = data[i][0];       
    var firstName = data[i][1];
    var email = data[i][12]; 

    contactsList.push({
      contactPerson: {
        emailAddresses: [{ value: email }],
        names: [
          { familyName: lastName, givenName: firstName },
        ],
      },
    });
  }

  // 批量创建联系人
  if (contactsList.length > 0) {
    const obj = {
      contacts: contactsList,
      readMask: "emailAddresses,names",
    };
    const res = People.People.batchCreateContacts(obj);
    console.log(res);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:17:45