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
相关产品推荐
相关产品推荐

