Google Script - Siret / Sirene

J’ai essayé sur plusieurs laptop @ScrapingExpert et elle fonctionne aussi de mon coté :thinking:

Je recase mon article (encore une fois, désolé…) mais je traite exactement ce cas dedans, avec le script déjà prêt: Google Scripts: Boostez Google Sheet en créant vos propres Fonctions !

je pense même que tu as copié le script depuis mon article :slight_smile:

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.

Enjoy :slight_smile:

4 « J'aime »

Résolu en effet j’avais bien suivis la démarche de ton site Brice :slight_smile:
J’ai pu tout enrichir, les siren je l’ai ai transformé en SIRET :slight_smile:

1 « J'aime »

Attendez attendez … il n’y a pas besoin de créer de tokens d’api pour accéder à l’API sirene :open_mouth: ? L’appel de l’url est publique et sans authentification ?

of course !!!

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)

Voilà le lien

C’est encore en beta, donc soyez indulgents!

4 « J'aime »

très cool ça @Mapi !

C’est vraiment top ce que vous faites @Mapi et @cebri ! Merci

J’ai réussi à nettoyer ma base d’entreprises (je travaille pour une collectivité) et à mettre à jour le site web !

J’arrive bien à récupérer toutes les infos (merci Brice) et à utiliser la fonction ImportJson pour les afficher :

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 d’avance pour votre aide !

1 « J'aime »

Salut @HAnelli,

J’ai fait un modèle pour ce que tu souhaites faire:
https://docs.google.com/spreadsheets/d/17DYyyjqywo5uj95kU9uYLs0lEVuzEOZHij_y0kFUUN8/copy

Que veux-tu dire par « j’ai du mal à rentrer dans ta fonction »?

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é.

En d’autres termes, comme la fonction importjson renvoie une colonne avec les champs et une colonne avec les valeurs, j’ai du mal à voir comment étirer la formule :slight_smile:
https://docs.google.com/spreadsheets/d/1W4ieRQ2CxmMJAFrly0Pd7ox_AhbdD6dMLejYjms96Bg/edit?usp=sharing
onglet GDax2

Tu peux filtrer pour récupérer seulement certains éléments. Comme ceci:

Tu peux regarder la feuille GDAx:
https://docs.google.com/spreadsheets/d/1lnU6ded0JMSFN3p1UBr7IWpv91ifZZ7V_11tyZEFvyI/copy

Si tu ne veux pas l’en-tête, ajoute INDEX(la_formule;;2)

2 « J'aime »

Merci beaucoup @Mapi ! ça fonctionne au poil :slight_smile:
Je ne suis pas un féru des fonctions gsheet mais je vais essayer de comprendre !

efficace @Mapi

Bonjour , bon script, @David_Lopes comment as tu fais pour ajouter les telephones à partir du siret ? à partir de quel site ?

Hello,

Au top ce petit tuto @cebri ! Merci :slight_smile:

Petite question: le return du script comprend la TVA intracommunautaire, le numéro de siret, la raison sociale, etc.

Quand j’appelle la fonction: =sirene(B2)
Ca me return le numéro de TVA intracommunautaire

Quelle est l’astuce pour retourner la raison sociale sans changer la fonction?

J’ai testé d’appeler l’index de la liste retournée, par exemple =sirene(B2[2]) ou =sirene(B2; 2) mais ça ne fonctionne pas.

J’ai également tenté =sirene(B2; ‹ nom_raison_sociale ›) et =sirene(B2; ‹ data.nom_raison_sociale ›) sans plus de succès.

j’avais déjà scraper la base avant de vouloir faire de l’enrichissement par le biais de Siret/sirene

tu n’as rien a faire normalement. avec ce script tu récupères toutes les infos listées dans le tableau ([…])

Si tu ne les récupères pas, c’est que ton SIRENE n’est peut etre pas valide. Regardes ici si tu as bien les infos que tu cherches
https://entreprise.data.gouv.fr/api/sirene/v1/siren/789566353 (en remplacant mon siren par le tien)

1 « J'aime »

Là on est en plein dans le sujet
J’ai exactement les mêmes besoins en partant d’une base d’entreprise de ma cible avec Siren dans 90% des cas mais qui commence à dater.
Il faudrait aller vérifier l’état de la société Active ou plus
Pour les sociétés actives la mise à jour des données classiques NAF, effectifs, nbre d’établissements…
Quelques sociétés dont il faudrait rechercher le siren
Au fait @David_Lopes j’ai pas compris comment tu as fait pour les n° de téléphone qui a ma connaissance ne sont pas partie du Siren
A la différence des autres participants à ce fil, j’suis un bleu en Gscripts :slight_smile: mais je me soigne ou du moins j’essaie.
Et surtout je manque de temps.
Est-ce que l’un de vous pourrais m’aider à faire ou faire contre rémunération ?

Merci

PS: @Mapi je vais voir ton produit pour essayer de comprendre les applications en terme d’usages

Merci @cebri ! Il ya clairement quelque chose qui m’échappe, je vais continuer de chercher de mon côté :slight_smile:

A priori, mon siren est bien valide. J’ai fait le test avec le tien également et je récupère le même résultat, à savoir, la donnée qui correspond au premier élément retourné dans le script, donc data.numero_tva_intra

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
    ]]

Je viens de regarder l’api, le format a changer. L’erreur ne vient pas de toi !
==> J’ai updaté l’article avec le bon code.

En gros ils ont ajouté un noeud « siege_social » pour toutes les datas autre que la TVA, et le code n’entrait pas dedans, donc pas de valeurs. Du coup, a la place de data.siret il faut data.siege_social.siret, etc.

J’ai retesté avec le nouveau code, ca fonctionne :+1:

4 « J'aime »