Dolibarr , Google Sheet et Google Data Studio

J’utilise Dolibarr depuis la version 2.
J’ai grandi avec.
Aujourd’hui je monte des tableaux d’analyse de toutes sorte grâce à Google sheet et data studio.
Si ça vous interresse …

Oui, il faut nous en dire plus maintenant :grinning:

En fait,
J’ai réussi à connecter mes google sheet à ma base de données MYSQL de Dolibarr.
Je peux donc extraire les données directement depuis la base juste en cliquant sur un bouton dans google sheet.
Je peux donc créer des tables dans sheet avec tout ce que je veux dans Dolibarr et les connecter avec Google Studio.
Rapports de ventes, d’achat, …
KPIs
BI Tool

Slt
Si tu peux nous faire un tuto pour ca déja :smiling_face_with_three_hearts:

Franchement ca m’intéresse aussi et pourquoi pas un article dans le wiki

On peut lier google sheet dans les 2 sens en ODBC. (ptites recherche et vous en trouverez à la pelle des tutos)
Il faut bien sûr que le serveur qui héberge votre mysql accepte les connexions distantes pour mysql.

Il est toujours intéressant d’avoir un retour d’expérience et enrichir la base de Dolibarr.

Tout simplement pour les recherches google (Ou autre) et faire connaitre Dolibarr.

Bonjour
Petit détail qui a son importance. Pensez RGPD, l’utilisation d’outils comme Google doit être vérifiée. Vous ne savez pas ce qu’en fait Google ni même où sont exploité/stocké les données ! C’est quand même tout le sourcing de votre entreprise !
Je reste conscient que ça peut être pratique.
@+

@philazerty
Et que ça ne dérange personne de stocker en clair user et pass chez google :wink:

Oui c’est une bonne réflexion

@Arre @BB2A
J’ai résolu le pb en ce qui me concerne, pas de compte Google (pas même mon Android).
Et de toute façon Google est bloqué au bureau par le firewall.
@+

C’est radical plutôt sur Apple ?

Non je suis sous Android mais pas de compte Google, en fait il n’y en a pas besoin si tu utilise Aurora plutôt GooglePlay.
Coté Firewall seul les stockages à distance sont bloqués (Google comme les autres). On peut y lire mais pas y écrire ni envoyer des fichiers :smiley:
@+

C’est exactement ce que j’ai fais.
Connection a ma base de données MYSQL.
Si vous recherchez un hébergeur qui accepte les connexions distantes … moi j’utilise A2 Hosting

Je vais essayer de faire une tuto …

Je peux comprendre les reticences à ce sujet … mais franchement, les donnees que je stock ne sont pas secret d’etat …

Salut @philazerty

Côté RGPD et Google, il faut un abonnement pro à 10,4 par mois pour s’assurer que les données soient en Europe et raccord avec la RGPD

@+

Ce n’est pas une histoire de secret mais de réglementation. Le RGPD doit être appliqué dès la mise en oeuvre tant qu’à faire ! Pour rappel, il y a tous vos clients et vos contacts, donc quelques données privées comme des noms, téléphones etc…
@+

Vous avez raison.

Cependant je suis sous google apps payant ! Donc cela devrait être OK non ?

Ok Démarrons une tuto :
Premiere Etape :
Hébergement (Sur A2Hosting par exemple)
Rajout de l’adresse IP de mon serveur sur Google
Controlling Access with Firewalls (Pour vous aider)
https://console.cloud.google.com/ (Pour faire le nécessaire)

Deuxième Etape :
Créer un document vierge sous Google Sheet
Renommer le « Sheet » comme « Products » (Dans l’exemple)

Troisième Etape :
Cliquez sur Tools (Outils) → Script Editor (Editeur de Script)

Quatrième Etape :
Créer un Menu.
Le mien s’appelle « Quote System ». Dans l’exemple, il va vous permettre de telecharger la liste des produits de Dolibarr vers votre Sheet « Products »

Copiez et coller le code ci-dessous :

function OnOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Quote System')
.addItem('Update Products', 'GetProducts') 
.addToUi();
}

Cinquième Etape :
Créer le script qui va se connecter a la base de donner et telecharger les produits.

Copiez et coller le code ci-dessous apres la fonction OnOpen() soit en ligne 8:

function GetProducts() {
SpreadsheetApp.getActiveSpreadsheet().toast('Getting Products'); // Affichage d'une petite fenetre marquant l'etape.

// variables de connexions  
  var dbUrl = "jdbc:mysql://ladresse.demon.serveur:3306/nom_de_ma_table"; // changez les variables ici pour celles correspondant a votre base de données
  var user = "mon_utilisateur";
  var userPwd = "mon_password";
  
  var connection = Jdbc.getConnection(dbUrl, user, userPwd);  

// Lancer la requete
var SQLstatement = connection.createStatement();
var result = SQLstatement.executeQuery("SELECT rowid,	ref,	entity,	ref_ext,	datec, tms, fk_parent, label FROM matable.llxo7_product WHERE tosell=1"); // remplacer matable par le nom de votre table. Cette requete ne telechargera que les produits actifs et llxo7 correspond au prefixe de ma table. vous devez donc remplacer llxo7.product par votre table.

// Definition de la Cible
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Products");
var cell = ss.getRange('A2');

// loop dans les resultats
var row = 0;
while(result.next()) {
for(var i=0; i<8; i++) { // i<8 donne le nombre de colonnes dans la base
cell.offset(row, i).setValue(result.getString(i+1));
}
row++;
}
// fermeture des connexions
result.close();
SQLstatement.close();
connection.close();
  
//Browser.msgBox('Products Updated'); // ou
SpreadsheetApp.getActiveSpreadsheet().toast('Products Updated');  
};
// Fin du script

Ensuite sauvegardez le script, fermez le document et ouvrez le a nouveau.
Vous devriez avoir un menu « Quote System » qui apparait juste apres AIDE
Cliquez dessus puis sur « Update Products »
Vous devriez voir la feuille se remplir au fur et a mesure.

Si jamais le menu n’apparait pas … cela arrive de temps en temps, forcez l’ouverture en passant par la fontion automatisation (Triggers) de google script.

Et voila !!!

Vous pouvez biensur utiliser ce principe pour toutes les tables que vous souhaitez telecharger … vous pourrez apres cela utiliser google sheet pour faire des croisement et construire toute sorte de nouveau tableau (index, vlookup …)

A vous de jouer !

ATTENTION : en copiant le code, les ’ deviennent des <> et les " deviennent << >>
Donc remplacez les < et > par ’ et les << et >> par " dans votre code sous google script sinon ca ne marchera pas.

2 « J'aime »