Optimisez votre répertoire avec un script pour Google Contacts


Dans l’univers numérique d’aujourd’hui, où les interactions sociales et professionnelles se multiplient, maintenir un carnet d’adresses organisé est plus qu’une nécessité – c’est une forme d’art.

Imaginez un instant : chaque nom et prénom dans votre répertoire est formaté avec précision, chaque mot débutant par une lettre majuscule, même dans les noms composés ou les prénoms délicats comme « Marie-Cécile » ou « Jean-Jacques ». Non seulement cela rend votre liste de contacts visuellement agréable, mais cela simplifie également la recherche et l’identification de contacts spécifiques.
Aujourd’hui, je vous présente un script Google Apps Script qui transforme cette vision en réalité.

Un script pour les gouverner tous

La dernière innovation dans notre suite d’outils de gestion des contacts est un script conçu pour parcourir votre répertoire Google et mettre à jour automatiquement les noms et prénoms, en veillant à ce que chaque mot commence par une lettre majuscule, le reste étant en minuscules. Ce traitement s’applique même aux noms composés, prenant en compte les traits d’union et assurant une cohérence parfaite.

Comment ça fonctionne ?

Le cœur de notre script repose sur une fonction appelée capitaliserChaqueMot, un code qui ajuste chaque nom et prénom dans votre liste de contacts. Elle s’assure que même les noms les plus complexes sont formatés correctement.

Mais ce n’est pas tout : conscient de la précieuse bande passante de l’API Google et du temps de nos utilisateurs, le script exécute une mise à jour uniquement si nécessaire. Cela signifie qu’il vérifie d’abord si le nom ou le prénom a déjà le format désiré avant de procéder à une quelconque modification.

Pourquoi c’est important ?

Vous pourriez vous demander : pourquoi tout ce tracas pour quelques majuscules ? La réponse réside dans les détails. Un carnet d’adresses bien organisé réduit le stress, simplifie la communication et, osons le dire, apporte un petit plaisir esthétique dans notre routine quotidienne surchargée. De plus, dans le monde professionnel, ces détails peuvent refléter votre niveau de soin et d’attention, des qualités toujours appréciées.

Mise en oeuvre

La mise en place de ce script est simple. Avec quelques clics et un copier-coller dans Google Apps Script, vous pouvez lancer le processus et voir la transformation s’opérer sous vos yeux. Imaginez l’impact lors de votre prochaine recherche de contact : chaque nom, un petit chef-d’œuvre de typographie !

// Fonction pour mettre une majuscule au début de chaque mot dans une chaîne
function capitaliserChaqueMot(chaine) {
  if (chaine && chaine.trim().length > 0) {
    return chaine.split(' ').map(segment =>
      segment.split('-').map(sousSegment =>
        sousSegment ? sousSegment[0].toUpperCase() + sousSegment.slice(1).toLowerCase() : ''
      ).join('-')
    ).join(' ');
  } else {
    return '';
  }
}

function mettreAJourNomsEtPrenoms() {
  backoffExponentiel(function() {
    var contacts = [];
    var jetonPage;
    do {
      var reponse = People.People.Connections.list('people/me', {
        pageSize: 100,
        personFields: 'names,metadata',
        pageToken: jetonPage,
      });
      if (reponse.connections) {
        contacts = contacts.concat(reponse.connections);
      }
      jetonPage = reponse.nextPageToken;
    } while (jetonPage);

    contacts.forEach(contact => {
      if (contact.names && contact.names.length > 0) {
        let miseAJourNecessaire = false;
        const nomsMisAJour = contact.names.map(nom => {
          const nomFamilleOriginal = nom.familyName;
          const nomFamilleFormate = capitaliserChaqueMot(nomFamilleOriginal);
          const prenomOriginal = nom.givenName;
          const prenomFormate = capitaliserChaqueMot(prenomOriginal);

          if (nomFamilleOriginal !== nomFamilleFormate || prenomOriginal !== prenomFormate) {
            miseAJourNecessaire = true;
            return { ...nom, familyName: nomFamilleFormate, givenName: prenomFormate };
          } else {
            return nom;
          }
        });

        if (miseAJourNecessaire) {
          const requeteMiseAJour = {
            etag: contact.etag,
            names: nomsMisAJour
          };

          try {
            People.People.updateContact(requeteMiseAJour, contact.resourceName, {
              updatePersonFields: 'names'
            });
            Logger.log('Contact mis à jour : ' + (nomsMisAJour[0].givenName + ' ' + nomsMisAJour[0].familyName));
          } catch (e) {
            Logger.log('Erreur lors de la mise à jour du contact : ' + e.message);
          }
        }
      }
    });
  });
}

function backoffExponentiel(fonctionAppel) {
  var tentativesMax = 5;
  var tentative = 0;
  while (tentative < tentativesMax) {
    try {
      fonctionAppel();
      break; // Si l'appel réussit, sortir de la boucle
    } catch (e) {
      if (e.toString().includes("Quota exceeded")) {
        if (tentative == tentativesMax - 1) {
          Logger.log('Tentative finale, échec après ' + tentativesMax + ' tentatives. Attendre plus longtemps.');
          Utilities.sleep(10000); // Attendre plus longtemps avant la dernière tentative
        } else {
          var delai = Math.pow(2, tentative) * 1000; // Délai exponentiel
          Utilities.sleep(delai);
        }
        tentative++;
      } else {
        // Pour les erreurs non liées au quota, log l'erreur et sortir
        Logger.log('Erreur non liée au quota : ' + e.message);
        break;
      }
    }
  }
  if (tentative == tentativesMax) {
    Logger.log('La mise à jour des contacts a échoué après ' + tentativesMax + ' tentatives.');
  }
}

Conclusion

L’organisation de vos contacts ne doit pas être une corvée. Avec notre dernier script Google Apps Script, elle devient une opération simple, rapide et, osons le dire, satisfaisante. Adoptez-le aujourd’hui et transformez votre répertoire en une galerie de noms parfaitement formatés.

Je vous propose dans un autre article de gérer les numéros de téléphone de Google Contacts.

1 réflexion au sujet de « Optimisez votre répertoire avec un script pour Google Contacts »

Laisser un commentaire