Bonjour,
je débute sous google script et je me suis fait aider par de chatgpt pour le faire.
j'ai commencer un script qui me permet de récupérer les contact google directement dans une feuille Sheets.
il fonctionne mais il ne me remonte pas le champs "service" présent dans le bloc société/entreprise.
voici le code
function getGoogleContacts() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Effacer les données précédentes
sheet.clear();
// Écrire les en-têtes des colonnes
sheet.appendRow([
"Name",
"Group Membership",
"E-mail 1 - Value",
"Phone 1 - Value",
"Address 1 - Formatted",
"Address 2 - Formatted",
"Organization 1 - Name",
"Organization 1 - Service",
"Organization 1 - Title",
"Website 1 - Value"
]);
// Récupérer les contacts Google
var contacts = ContactsApp.getContacts();
// Parcourir les contacts et les écrire dans la feuille
for (var i = 0; i < contacts.length; i++) {
var contact = contacts;
// Récupérer les informations sur le contact
var name = contact.getFullName() || "";
var groupMembership = "";
var contactGroups = contact.getContactGroups();
if (contactGroups !== null) {
groupMembership = contactGroups.map(group => group.getName()).join(", ") || "";
}
var emails = contact.getEmails();
var phones = contact.getPhones();
var addresses = contact.getAddresses();
var organizations = contact.getCompanies();
var websites = contact.getUrls();
// Déterminer l'organisation
var orgName = "";
var orgService = ""; // Déclaré une seule fois
if (organizations.length > 0) {
orgName = organizations[0].getCompanyName() || "";
if (organizations[0].getService && typeof organizations[0].getService === "function") {
orgService = organizations[0].getService() || "";
}
var orgTitle = organizations[0].getJobTitle() || ""; // Déclaré localement
}
// Récupérer les valeurs pour chaque champ
var email1 = emails.length > 0 ? emails[0].getAddress() : "";
var phone1 = phones.length > 0 ? phones[0].getPhoneNumber() : "";
var address1 = addresses.length > 0 ? addresses[0].getAddress() : "";
var address2 = addresses.length > 1 ? addresses[1].getAddress() : "";
// Utiliser la propriété 'address' pour obtenir l'URL du site Web
var website1 = websites.length > 0 ? websites[0].getAddress() : "";
// Écrire les données du contact dans la feuille
sheet.appendRow([
name,
groupMembership,
email1,
phone1,
address1,
address2,
orgName,
orgService,
orgTitle,
website1
]);
}
}
Si quelqu'un peut corriger le script ce serait sympa.
Merci
Script récupérer contact google dans sheet
- NC_Quentin
- Invétéré
- Messages : 36
- Inscription : 10 oct. 2022 09:06
- A remercié : 1 fois
- Remercié : 12 fois
Re: Script récupérer contact google dans sheet
Bonjour !
Je suis surpris que ce script fonctionne, étant donné que le service Contacts est déprécié. Lorsque j’ai testé le script, j’ai moi-même eu une erreur, typiquement. Il est recommandé de plutôt utiliser le service People API, mais c’est déjà plus compliqué. Voilà un code relativement "simple" qui fait ce que vous cherchez à faire dans une certaine mesure, mais pour arriver à un résultat très propre, il faudrait rajouter pas mal de lignes de codes :
À noter que pour que ce code fonctionne, il faut ajouter le service PeopleAPI à votre script. Pour cela, dans la barre verticale à gauche, cliquez sur le + de Services, puis sélectionnez Peopleapi, et faites Ajouter. Après cela, le code devrait fonctionner.
En espérant que cela a pu vous aider !
Je suis surpris que ce script fonctionne, étant donné que le service Contacts est déprécié. Lorsque j’ai testé le script, j’ai moi-même eu une erreur, typiquement. Il est recommandé de plutôt utiliser le service People API, mais c’est déjà plus compliqué. Voilà un code relativement "simple" qui fait ce que vous cherchez à faire dans une certaine mesure, mais pour arriver à un résultat très propre, il faudrait rajouter pas mal de lignes de codes :
Code : Tout sélectionner
function getContactInfosIntoSheets() {
try {
// On récupère les données, sous la forme d’un JSON
const people = People.People.Connections.list("people/me", {
personFields: "names,memberships,emailAddresses,phoneNumbers,addresses,organizations,urls",
pageSize: 1000,
});
// On transforme le JSON en un objet standard
JSON.parse(people);
// On récupère connections, qui contient tous nos contacts
const connections = people.connections;
// On crée la ligne d’en-têtes
const headers = ["Names", "Memberships", "Addresses", "Phone Numbers", "Organizations", "URLs"];
// On crée un tableau connections à partir de chaque contact, et on extrait une liste d’éléments précis de chaque ensemble de propriétés qui constituent un contact
const result = connections.map(connection => {
return [
connection?.names?.map(name => name?.displayName ?? "").join() ?? "",
connection?.memberships?.map(membership => membership?.contactGroupMembership.contactGroupResourceName ?? "").join() ?? "",
connection?.addresses?.map(address => address?.formattedValue ?? "").join() ?? "",
connection?.phoneNumbers?.map(phoneNumber => phoneNumber?.value ?? "").join() ?? "",
connection?.organizations?.map(organization => organization?.name ?? "").join() ?? "",
connection?.urls?.map(url => url?.value ?? "").join() ?? ""
]
});
// On rajoute le headers
result.unshift(headers);
// On va inscrire ça sur la feuille active, depuis la cellule A1
SpreadsheetApp.getActiveSheet().getRange(1, 1, result.length, result[0].length).setValues(result);
} catch (err) {
// Si jamais il y a une erreur, on l’affiche
console.error(err);
}
}
À noter que pour que ce code fonctionne, il faut ajouter le service PeopleAPI à votre script. Pour cela, dans la barre verticale à gauche, cliquez sur le + de Services, puis sélectionnez Peopleapi, et faites Ajouter. Après cela, le code devrait fonctionner.
En espérant que cela a pu vous aider !
Re: Script récupérer contact google dans sheet
Sympa Quentin en effet je l'ai testé ça fonctionne je vais essayer de rajouter les autres champs : Anniversaire ... ,mais API People plutot complexe a utilisé, pour ma part je n'arrive toujours pas à
extraire des données de mes contacts à partir d'un script autonome notamment : Changer les Photos de Profil des Contacts par une autre image ( il me semble qu'il faut convertir l'image en 64 bites )
Cdlt
Laurent
extraire des données de mes contacts à partir d'un script autonome notamment : Changer les Photos de Profil des Contacts par une autre image ( il me semble qu'il faut convertir l'image en 64 bites )
Cdlt
Laurent
Rejoignez la discussion 💬
Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres
Inscrivez-vous dès aujourd'hui
Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles
Inscription