我正在处理一个脚本,以删除并重新添加大约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)
}
答案 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授权。
参考