Skip to content

Instantly share code, notes, and snippets.

@Denperidge
Last active July 19, 2022 20:40
Show Gist options
  • Save Denperidge/e82855986ee0f4f21dbb75b731191022 to your computer and use it in GitHub Desktop.
Save Denperidge/e82855986ee0f4f21dbb75b731191022 to your computer and use it in GitHub Desktop.
Import contacts into a spreadsheet, if they have a label starting with {string}
/**
* Import contacts with defined label, add them between colStart and colEnd, without adding ones that were previously added
*/
function main() {
already_added = importContacts("Starred");
importContacts("[0]", "F", "H", already_added);
}
function importContacts(groupname, colStart="A", colEnd="C", filter_out=[], maxMembers=50) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var groups = People.ContactGroups.list().contactGroups;
var group = groups.filter((x) => x.name.toLowerCase().startsWith(groupname.toLowerCase()))[0]
// maxMembers needs to be defined to get member resource names
var peopleResourceNames = People.ContactGroups.get(group.resourceName, {maxMembers: maxMembers}).memberResourceNames;
console.log("peopel resourcenames :")
console.log(peopleResourceNames)
console.log("fitlerout :")
console.log(filter_out)
peopleResourceNames = peopleResourceNames.filter((peopleRescourceName) => !filter_out.includes(peopleRescourceName));
var responses = People.People.getBatchGet({"resourceNames": peopleResourceNames,"personFields": "photos,names"}).responses;
var output = [];
responses.forEach((response) => {
var person = response.person;
var name = person.names[0];
output.push([`=image("${person.photos[0].url}")`, name.givenName, name.honorificSuffix]);
});
var startIndex = 2;
spreadsheet.getRange(`${colStart}${startIndex}:${colEnd}${startIndex + output.length - 1}`).setValues(output);
return peopleResourceNames; // Return resource names to be used for filter_out
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment