Bonjour tout le monde,
Je fais face à un problème mêlant Google Sheet & Google Script :
Je souhaiterai à partir d’un script google sheets de retourner les infos suivantes depuis un SIREN :
Numéro de TVA
SIRET
Nom de la Raison Sociale
Numéro et Rue
Code postal et Ville
Libellé de l’Activité Principale
Catégorie d’Entreprise
Date de Création de l’Entreprise
Ayant déjà une base de 20 000 lignes, je souhaiterai mettre à jour cette base avec le SIRET / SIRENE pour réaliser de l’enrichissement de Data.
À partir de ce script :
« function companydetails(siret) {
var url = "https://entreprise.data.gouv.fr/api/sirene/v1/siret/ + siren;
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
return [[
data.numero_tva_intra, data.siret, data.nom_raison_sociale,
data.l4_declaree, data.l6_declaree, data.libelle_activite_principale,
data.categorie_entreprise, data.date_creation_entreprise
]];
}
Le fait d’avoir un #erreur m’indique que le n° Siret ou Sirene n’est plus valide ce qui me permet de clean cette base et ce n’est pas forcément un problème.
Le problème étant les cellules des flèches bleus qui ne s’affichent pas. Car en faisant une recherche sur data.gouv :

Est-ce qu’il serait possible qu’il y ait trop de requêtes HTTP envoyées, et que par conséquent le script Google prenne trop de temps? Auquel cas, possible que les requêtes n’aboutissent pas complètement et t’amènent à ce type de comportement/erreurs…
Non ayant bien vérifié ce n’est pas les requêtes qui bloquent le résultat.
-> J’ai rajouté : var response = UrlFetchApp.fetch(url, {‹ muteHttpExceptions ›: true});
J’ai screen pour te montrer le problème.
Regardes bien quand je supprime les colonnes D à K, le message d’erreur : Le résultat n’a pas été développé, pour ne pas écraser les données de E99.
Pour le premier message d’erreur je sais d’où ca provient c’est une question de Siret et non de Sirene et même problème le résultat ne s’affiche pas.
je pense même que tu as copié le script depuis mon article
Comme tu peux le voir dans mon script, je fais appelle a l’api du SIREN, et non du SIRET: tu as modifié l’url pour récupérer les données SIRET. Aucun pbl à priori, mais change aussi le nom des variables sinon le script plante ! ton erreur est aussi simple que ca…
Donc change dans le script le nom des champs par ceux que tu veux récupérer dans l’api SIRET et voila, ca fonctionnera.
Une alternative serait que tu prennes les 9 premiers chiffres du SIRET pour reformer le SIREN et utiliser exactement mon script.
Attendez attendez … il n’y a pas besoin de créer de tokens d’api pour accéder à l’API sirene ? L’appel de l’url est publique et sans authentification ?
Après avoir créé ImportFromWeb pour Google Sheets pour scraper la plupart des sites (même protégés ou avec Javascript), je lance ImportJson.
La fonction est hyper puissante:
Cache les résultats pour éviter de faire des requêtes intempestives
Convertit les JSON multi-niveaux en une table 2D (ça met les éléments d’un array directement en colonne)
Filtre facilement pour naviguer dans la hiérarchie
Permet de lancer n’import quelle requête cUrl, donc ça n’échappe à quasiment n’importe quelle requête même celles qui ont besoins de cookies (Pour ça je vais monter un tutoriel très prochainement)
Je souhaite étendre à toute la liste d’entreprise pour vérifier les adresses, récupérer certaines informations pertinentes (dans l’optique finale de mettre à jour notre CRM)
Je vois bien deux solutions :
1/ Faire une formule par donnée sur le modèle de Brice (pour toutes mes données d’intérêt)
function siret(siret) {
var url = "https://entreprise.data.gouv.fr/api/sirene/v1/siret/" + siret;
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
return [[
data.etablissement.siren
]];
}
2/ Essayer de mieux exploiter l’outil de Mapi pour récupérer les données, les afficher en colonnes (ou en lignes) mais sans l’en-tête à chaque fois
Pour ma culture, j’aimerai bien privilégier le deuxième choix mais j’ai du mal à rentrer dans ta fonction @Mapi
Merci pour ce retour rapide.
Je voulais étirer la fonction pour récupérer les données de toutes mes entreprises. Puis après ne garder que les données d’intérêt.
Je me suis dit que ça devait être un filtre que tu as implémenté.