Google Apps脚本-联系人-查询多个字符串

时间:2018-07-18 18:53:45

标签: google-apps-script google-contacts

我正在处理一个脚本,以删除并重新添加大约100个联系人。我对ContactsApp.getContactsByEmailAddress有12种不同的搜索条件,而这些信息最初需要30秒钟才能运行。有什么办法只能运行一次并搜索我的所有条件?我一直在寻找其他尝试执行此操作的人,但未成功。

以下是我的函数进行的搜索之一(重复12次,并将各种搜索词传递给ContactsApp.getContactsByEmailAddress)。我添加了try-catch块,因为该脚本在各种删除循环中似乎无缘无故抛出错误。

将不胜感激。

var apa = ContactsApp.getContactsByEmailAddress('apa.')
  try{
for (var i in apa) {
apa[i].deleteContact()
}
  } catch(e){
      Logger.log(e)
}

1 个答案:

答案 0 :(得分:0)

使用Contacts Service,您将只能使用一个搜索条件。因此,搜索多个模式的唯一方法是使用每个搜索参数调用一次该方法。值得庆幸的是,您可以使用标准的编程习惯来最大程度地减少重复代码的数量:

divs

this SO question中提到的Google Calendar v3 GData API确实支持multiple query parameters。但是,此API没有简单的集成-您将需要编写适当的URL请求并使用function getContactsWithEmails(emailSearchCriteria) { if (!emailSearchCriteria || !emailSearchCriteria.length) throw new Error("No search inputs given"); // Collect the results of each search into a single Array. const matches = []; emailSearchCriteria.forEach(function (email) { var results = ContactsApp.getContactsByEmailAddress(email); if (results.length) Array.prototype.push.apply(matches, results); else console.log({message: "No results for search query '" + email + "'", query: email, resultsSoFar: matches}); }); return matches; } function deleteContacts(arrayOfContacts) { if (!arrayOfContacts || !arrayOfContacts.length) throw new Error("No contacts to delete"); arrayOfContacts.forEach(function (contact) { ContactsApp.deleteContact(contact); }); } // Our function that uses the above helper methods to do what we want. function doSomething() { // Define all email searches to be performed. const emailFragmentsToSearchWith = [ "email1", ... "emailN" ]; const matchingContacts = getContactsWithEmails(emailFragmentsToSearchWith); if (matchingContacts.length) { /** do something with the contacts that matched the search. * someMethodThatSavesContacts(matchingContacts); * someMethodThatModifiesContacts(matchingContacts); * deleteContacts(matchingContacts); * ... */ } /** do other stuff that doesn't need those contacts. */ } 执行。

除了Google Contacts API外,您还可以使用Google People REST API,特别是people.connections#list端点。

这两个API均要求您将Apps Script项目与已启用相应API的Google Cloud Project关联,并且除您的清单文件外,可能还需要您手动设置Apps Script项目所需的范围。为您向API端点发出的关联HTTP请求提供OAuth2授权。

参考