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

Google Apps Script通过表格联系人姓名获取Google Contacts的resourceName时偶发失效问题求助

Google Apps Script通过表格联系人姓名获取Google Contacts的resourceName时偶发失效问题求助

各位好,我遇到了一个Google Apps Script的问题,想请大家帮忙排查下:

我有个名为"Test"的Google表格,B列存的是Google联系人里的姓名,我希望能在对应行的A列自动填入该联系人的resourceName(格式类似people/cxxxxxxxx)。我的具体需求流程是:

  • 弹出输入框,让我输入目标联系人所在的行号(比如行2)
  • 调用People.SearchContacts方法,根据该行B列的姓名(比如"Mark Gerrits")去Google联系人中搜索
  • 找到对应联系人的resourceName后,填入同一行的A列

我参考了社区里的代码(特别感谢HotDogWater和Oz Ben-David的分享),修改后写出了下面的函数。原本期望它能稳定地把找到的resourceName填入表格,但现在的问题是有时候能成功填入,有时候明明联系人确实存在,却返回空结果,反复测试也没找到规律,实在搞不懂哪里出问题了。

以下是我目前使用的代码:

function getResourceNameFromCellValue() {

//see documented: function getNameFromEmail()
var spreadsheetId="xxxxxxxxxxxxxxxxx";

// Open spreadsheet with the ID
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);

// Name of the sheet
var dataSheetName = "Test";

// Get the sheet
var sheet = spreadsheet.getSheetByName(dataSheetName);

//var numberRow = 2;
var rowNumber = Browser.inputBox("Bepaal rijnummer van Contactpersoon", "Voer het nummer van de rij in:", Browser.Buttons.OK_CANCEL);

// Give the rownumber in the sheet for which Contact you want the resourceName
var rowAsNumber = Number(rowNumber);

var NameColumn = 2;
var Name = sheet.getRange(rowAsNumber,NameColumn).getValue();
Name = Name.toString();

//var name = Name;
var resourceName = Name;
var response;

Browser.msgBox('Succes','The resourceName of the Person with unstructuredName "' + Name + '" is placed in the Cell.',Browser.Buttons.OK);

People.People.searchContacts({ //Empty the cache
query: '',
readMask: 'names,emailAddresses',
});

response = People.People.searchContacts({
query: Name,
readMask: 'names,emailAddresses'
});

// Check if the response contains contacts
if (response.results && response.results.length > 0) {
//name = response.results[0].person.names[0].displayName;
resourceName = response.results[0].person.resourceName;
} else {
People.OtherContacts.search({ //Clear the cache
query: '',
readMask: 'names,emailAddresses',
});
response = People.OtherContacts.search({
query: Name,
readMask: 'names,emailAddresses'
});

// Check if the response contains contacts
if (response.results && response.results.length > 0) {
// name = response.results[0].person.names[0].displayName;
resourceName = response.results[0].person.resourceName;
}
}

//Logger.log(name);
Logger.log(response.results[0].person.resourceName);
Logger.log(resourceName);

// put the value of the result (name) in cell
//sheet.getRange(2, 1).setValue(name);
//sheet.getRange(rowAsNumber, NameColumn).setValue(resourceName);
sheet.getRange(rowAsNumber,2);
}

麻烦大家帮忙看看问题出在哪,为什么会出现这种偶发失效的情况呢?万分感谢!


备注:内容来源于stack exchange,提问作者M. Atou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 10:18:03