Apps Script : Script API PEOPLE Renommer un Champs personnalisé existant dans Google Contacts pour un Groupe de Contact

Bonjour,

   J'essaye sans grand succès d'utiliser API People à la place de la Classe Contact(Obsolète)
   J'ai suivi les conseils d'Ahmet en activant le service API People dans le script

[/size]
SVP novice avec API PEOPLELe Script ne fonctionne pas
Je souhaite remplacer le Libellé « CKD EPI » par « CKD EPI / CROKOFF / CREAT » (que le nom du Libellé ,pas la Valeur du champs annexe)

Qu’est qui ne va pas ?

function renameCustomField() {
  var debug = true;
  var group = People.PeopleApi.getContactGroups().get("MonGroup").execute();  //

[/size]__

[b]erreur [/b]

je pense que People n’a aucune propriété de PeopleApi[/size][/i][/u][/color]

  var oldFieldName = "CKD EPI";
  var newFieldName = "CKD EPI / CROKOFF / CREAT";
  
  for (var i = 0; i < group.members.length; i++) {
    var contact = group.members[i];
    var fields = contact.userDefined;
    for (var j = 0; j < fields.length; j++) {
      if (fields[j].key === oldFieldName) {
        fields[j].key = newFieldName;
        if (debug) {
          console.log("Renaming field for contact: " + contact.names[0].displayName);
        }
      }
    }
    var updateContact = {
      resourceName: contact.resourceName,
      updatePersonFields: "userDefined",
      userDefined: fields
    }
    People.PeopleApi.updateContact(updateContact).execute();
  }
}

[/size]

Bonjour !

J’ai fait une petite fonction qui permet de renommer un groupe de contacts. J’ai mis des commentaires, et même si je sais que c’est un peu illisible sur le forum puisque tout passe en vert, une fois copié-collé dans l’éditeur d’Apps Script ce sera plus lisible, promis.


function renameContactsGroup(oldName, newName){
// On récupère les groupes de contact
// cf. https://developers.google.com/people/api/rest/v1/contactGroups/list
let groups = People.ContactGroups.list().contactGroups;

// On trouve notre groupe
let group = groups.find(group => group.name == oldName);

// On vérifie que le groupe existe bien
if(group){
// On modifie le nom du groupe
// cf. https://developers.google.com/people/api/rest/v1/contactGroups/update
// Note annexe : Il est nécessaire de mettre le etag, qui sert de validation cache. Sans ce paramètre, il y aura une erreur "Fingerprint missing".
People.ContactGroups.update({contactGroup: { name: newName, etag: group.etag}}, group.resourceName);
}
}

Une version sans la fonction qui correspond exactement à ce que vous cherchez serait du coup :


let oldName = "CKD EPI";
let newName = "CKD EPI / CROKOFF / CREAT";

let groups = People.ContactGroups.list().contactGroups;

let group = groups.find(group => group.name == oldName);

if(group){
People.ContactGroups.update({contactGroup: { name: newName, etag: group.etag}}, group.resourceName);
}

À noter en revanche que c’est bien un renommage du groupe, si l’idée est de transférer les membres du groupe de départ vers le groupe d’arrivée en gardant l’étiquette initiale, il faudra procéder autrement !

Je suis vraiment désolé NC_Quentin …j’ai zappé ta réponse mais j’ai beaucoup avancé sur le sujet et trouvé la solution
Je viens d 'ouvrir un nouveau sujet sur

Sujet :Changer la photo de profil de tous les contacts appartenant a un groupe de contact
A l aide d un google appscript est il possible de changer la photo de profil de tous les contacts appartenant a un groupe de contact « SORTIES PATIENTELE » par une photo stocker dans Google photo

Photo dans Google Photo : var nouvellePhotoUrl = ‹ https://lh3.googleusercontent.com/contacts/AOq4Lda-i33omQ5KEEPZ8Nl2ocSWKwZ48tACcQzSWBbvNGTQ4oLS-0xQ ›; // URL de la nouvelle photo dans Google Photos