Dolibarr +WordPress : Exporter vos données vers Google Sheets sans “casser” votre installation existante
1. Pourquoi combiner Dolibarr, WordPress et Google Sheets ?
| Besoin | Solution naturelle | Résultat attendu |
|---|---|---|
| Gestion des devis, factures, stocks | Dolibarr (ERP/CRM léger) | Toutes les informations commerciales centralisées |
| Présence d’un site web | WordPress (édition de pages, blog, SEO) | Lieu de communication et de génération de leads |
| Reporting partagé | Google Sheets (tableurs collaboratifs) | Accès en lecture/écriture simultané, graphiques interactifs, automatisation via scripts |
Intégrer ces trois systèmes permet de ne pas perdre le travail déjà fait dans Dolibarr et WordPress, tout en tirant profit du confort de collaboration de Google Sheets. L’enjeu est d’ajouter cette fonctionnalité sans perturber les flux existants.
2. Principes clés d’une intégration « sans casser l’existant »
| Principe | Description | Astuce pratique |
|---|---|---|
| API native | Utiliser les API REST de Dolibarr et de Google Sheets plutôt que de manipuler directement les bases de données ou les fichiers. | Activez les modules “API” et “XML” dans Dolibarr → /dolibarr/api |
| Synchronisation unidirectionnelle | Commencer par exporter les données vers Sheets, pas les deux sens. Cela évite les conflits de mise à jour. | Créez un job quotidien (cron) qui rafraîchit les lignes concernées. |
| Déclenchement asynchrone | Ne bloquez pas le front‑end WordPress ; lancez l’export en arrière‑plan (cron, batch ou queue). | Utilisez wp_schedule_event() ou un script php appelé par un hook WordPress. |
| Gestion des droits | Ne partagez que les colonnes nécessaires (ex. : numéro de devis, client, montant, date). | Créez un fichier credentials.json limité aux scopes sheets.spreadsheets et drive.file. |
| Sauvegarde | Avant chaque export, créez une copie de la feuille Google Sheets (versionning). | Sheets API → files.copy avec un suffixe backup_YYYYMMDD. |
| Modularité | Encapsulez la logique dans un petit plugin ou un module Docker dédié. | plugins/dolibarr-wp-google-sheets-sync/ avec un fichier sync.php. |
3. Étapes concrètes pour mettre en place l’intégration
3.1 Préparer Dolibarr
-
Activer l’API
Configuration → Setup → API → Activer l'API REST- Créez un token d’accès (ex. :
MY_DOLIBARR_TOKEN) dans Users → API tokens.
-
Exporter les données nécessaires
- Sélectionnez les entités que vous voulez synchroniser :
Commandes(llx_commande) –Factures(llx_invoice)Clients(llx_customer)Stocks(llx_stock) – Exportez-les en JSON via l’API :curl -H "Authorization: Bearer MY_DOLIBARR_TOKEN" \
https://votredomaine.com/dolibarr/api/heritage/categorie/Commande? output=json
- Sélectionnez les entités que vous voulez synchroniser :
- Stocker les exports temporaires
- Créez un répertoire
tmp/dolibarr_exports/accessible uniquement par le serveur web. - Sauvegardez chaque API response dans un fichier
commandes.json,factures.json, etc.
- Créez un répertoire
3.2 Créer le script d’export vers Google Sheets
a. Authentification Google
- Téléchargez le fichier
credentials.jsondepuis la Google Cloud Console (API Sheets activée). - Autorisez les scopes :
https://www.googleapis.com/auth/spreadsheetsethttps://www.googleapis.com/auth/drive.file.
b. Bibliothèques PHP
composer require google/apiclient:^2.0
c. Exemple de script sync.php
<?php
require __DIR__.'/vendor/autoload.php';
use Google\Client;
use Google\Service\Sheets;
use Google\Service\Drive;
// ---------- 1. Initialisation ----------
$client = new Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Sheets::SPREADSHEETS);
$client->addScope(Drive::DRIVE_FILE);
$client->setAccessToken(file_get_contents('token.json'));
if ($client->isAccessTokenExpired()) {
// rafraîchir le token ici …
}
// ---------- 2. Récupérer les données Dolibarr ----------
$json = file_get_contents(__DIR__.'/../tmp/dolibarr_exports/commandes.json');
$cmds = json_decode($json, true);
// ---------- 3. Créer / ouvrir la feuille ----------
$spreadsheetId = '1A2B3C4D5E6F7...'; // à créer au préalable$range = 'Commandes!A2:E'; // en-têtes déjà présentes
$service = new Sheets($client);
$valueRange = $service->spreadsheets->values->get($spreadsheetId, $range);
$values = $valueRange->getValues();
// ---------- 4. Comparer & mettre à jour ----------
foreach ($cmds as $c) {
$row = [
$c['num'] // Numéro de commande
,$c['date'] // Date ,$c['client_id'] // Client
,$c['total'] // Montant
,'À vérifier' // Statut par défaut
];
// Recherche d'une ligne existante avec le même numéro (colonne A)
$found = false;
foreach ($values as $idx => $rowData) {
if ($rowData[0] == $c['num']) {
$found = true;
$values[$idx] = $row; // mise à jour
break;
}
}
if (!$found) {
array_unshift($values, $row); // ajout en première ligne vide
}
}
// ---------- 5. Écrire les changements ----------
$body = new Google\Service\Sheets\ValueRange();
$body->setValues($values);
$range = 'Commandes!A2:E';
$service->spreadsheets->values->update($spreadsheetId, $range, $body, [
'valueInputOption' => 'RAW'
]);
echo "Export terminé – " . count($cmds) . " lignes traitées\n";
?>
Note : Le script ne touche qu’à la feuille Commandes. Vous pouvez répéter le même mécanisme pour Factures, Clients ou Stocks en créant d’autres plages (
Factures!A2:D,Clients!A2:C, …).
3.3 Planifier le cron sous WordPress
- Créer un hook de réplication (dans
functions.phpde votre thème ou dans un petit plugin) :
add_action('daily_dolibarr_sheets_sync', 'dolibarr_gsync_start');
function dolibarr_gsync_start() {
// Vérif. droits, appel du script sans afficher de sortie
$cmd = "php /chemin/vers/yourproject/sync.php > /dev/null 2>&1";
exec($cmd, $output, $retcode);
error_log("Dolibarr‑Sheets sync – rc=$retcode");
}
add_action('wp_cron_event', 'dolibarr_gsync_start', 16200); // 5 h du matin
- Définir l’événement WordPress (dans le même fichier) :
if (!wp_next_scheduled('daily_dolibarr_sheets_sync')) {
wp_schedule_event(time(), 'daily', 'daily_dolibarr_sheets_sync');
}
Astuce : le cron WordPress est dépendant du trafic, mais pour une tâche de night‑batch, il suffit de le déclencher une fois par jour.
3.4 Créer la feuille Google Sheets et protéger les colonnes
- Créer un nouveau classeur :
Fichier → Nouveau → Feuille de calcul Google2. Nommer les onglets :Commandes,Factures,Clients,Stocks. - Insérer les en‑têtes dans la première ligne (ex. :
Numéro,Date,Client,Montant,Statut). - Verrouiller la première ligne (menu → Données → Plages et protections).
- Partager le fichier avec le compte de service qui possède le token
sheet(readonly pour les collaborateurs externes).
4. Bonnes pratiques pour éviter les ruptures
| Action | Pourquoi | Comment le mettre en œuvre |
|---|---|---|
| Sauvegarder la version originale | En cas d’erreur de mapping, vous pouvez revenir en arrière. | Files.copy via l’API Drive avant chaque exécution du script. |
| Limiter la fréquence | Trop de requêtes API Google ou Dolibarr peuvent déclencher des quotas. | Une fois par jour ou un incrément de 5 min seulement si le volume < 200 lignes. |
| Gestion des erreurs | Un simple curl qui échoue ne doit pas bloquer le site. |
Enveloppez chaque appel API dans un try/catch et loguez les erreurs (error_log). |
| Utiliser des tickets de statut | Vous pouvez suivre les lignes déjà traitées via une colonne “Synchro OK”. | Après mise à jour, écrivez Synchro: OK dans une colonne réservée. |
| Tester en environnement sandbox | Avant de pousser en prod, testez avec un jeu de données limité (ex. : 10 lignes). | Créez un “Mock” de Dolibarr avec des exports statiques. |
| Versionner le code | Un rollback rapide si la nouvelle version introduit un bug. | Git + déploiement via git pull && composer install. |
| Ne pas toucher aux tables WordPress | Le cœur WordPress doit rester intacts. | Tous les changements se font uniquement via le script côté serveur ou via un plugin dédié, pas via wp_insert_post. |
5. Exemple de tableau synchro (extrait)
| No. Commande | Date | Client | Montant (€) | Statut |
|---|---|---|---|---|
| FA-2023-101 | 2023‑10‑12 | Dupont J. | 1250,00 | ✅ OK |
| FA-2023-102 | 2023‑10‑15 | Martin A. | 830,50 | ⏳ En attente |
| … | … | … | … | … |
- Colonne “Statut” :
✅ OK→ déjà présent dans Sheets, ⏳ En attente→ en attente de validation client, –❌ Erreur→ requiert une vérification manuelle.
Ces icônes sont simplement des chaînes de caractères, mais vous pouvez les transformer en format conditionnel pour colorer les lignes.
6. Alternatives « no‑code » (si vous ne voulez pas toucher au code)
| Outil | Description | Points forts / limites |
|---|---|---|
| Zapier / Make (Integromat) | Trigger : webhook Dolibarr → Action : “Create/Update rows” dans Google Sheets. | Très rapide à configurer, mais limité aux 100 évènements/mois sur le plan gratuit. |
| n8n | Workflow auto‑hébergé (Docker) avec nœuds Dolibarr et Google Sheets. | Plus flexible que Zapier, nécessite un serveur Docker. |
| Google Apps Script + Web App | Script qui s’exécute via doPost depuis Dolibarr (via URL). |
Pas de serveur externe, mais nécessite d’activer un endpoint public (attention aux quotas). |
Conseil : Si votre volume de données est faible (moins de 500 lignes/mois), les solutions no‑code peuvent même surpasser le développement maison en rapidité.
7. Checklist de déploiement
| ✅ | Action |
|---|---|
| 1 | Activer l’API REST dans Dolibarr et créer un token dédié. |
| 2 | Installer et tester le script PHP (sync.php) en local avec un export JSON statique. |
| 3 | Créer le classeur Google Sheets avec les bonnes colonnes et le partage adéquat. |
| 4 | Générer les fichiers credentials.json & token.json (exécuter quickstart.php). |
| 5 | Ajouter le hook cron dans WordPress et vérifier qu’il s’exécute à l’heure prévue. |
| 6 | Mettre en place la sauvegarde de chaque feuille (Google Drive → versioning). |
| 7 | Effectuer un test complet : ajouter une nouvelle commande, lancer le script, vérifier la mise à jour dans Sheets. |
| 8 | Documenter les procédures d’urgence (restaurer la version backup, vérifier le log). |
| 9 | Mettre le tout sous contrôle de version (Git) et planifier un déploiement sur le serveur de prod. |
| 10 | Programmer une revue mensuelle des quotas API (Google & Dolibarr). |
8. Conclusion
Intégrer Dolibarr à WordPress puis à Google Sheets n’est pas une tâche qui nécessite de toucher au cœur de votre site. En suivant les principes de synchronisation unidirectionnelle, d’utilisation d’API natives et de planification asynchrone, vous pouvez :
- Exporter les informations clés (devis, factures, stocks) sans modifier les bases de données critiques.
- Conserver la stabilité de votre installation WordPress et de Dolibarr.
- Bénéficier d’un reporting collaboratif, visuel et interactif grâce à Sheets, tout en gardant un contrôle total sur les droits d’accès.
Le point essentiel réside dans la définition claire des flux : créez d’abord les exports, testez-les en boucle, puis planifiez-les. Ainsi, vous ajoutez une fonctionnalité précieuse sans casser l’existant – au contraire, vous la renforcez en lui offrant une couche de visibilité supplémentaire pour vos équipes.
À vous de jouer !
Mettez en place le petit script décrit ci‑dessus, créez votre classeur Google Sheets, et programmez le cron WordPress. Vous aurez alors un tableau de suivi automatisé qui rafraîchit chaque nuit, sans impacter vos visiteurs ni vos processus internes. Bon développement ! 🚀