Guide pratique – Des solutions modernes et automatisées
Objectif : permettre aux utilisateurs de Dolibarr (ERP/CRM) d’interagir de façon fluide avec les services Google Workspace (Gmail, Drive, Docs, Forms, Calendar, Sheets…) afin d’éliminer la saisie double, de profiter de la collaboration en temps réel et de centraliser les informations de l’entreprise.
1. Pourquoi coupler Dolphin & Google Workspace ?
| Besoin | Solution Google | Bénéfice pour Dolibarr |
|---|---|---|
| Stockage & partage de fichiers | Google Drive | Attacher automatiquement des devis, factures ou contrats à un contact client. |
| Collaboration texte en ligne | Google Docs | Générer des lettres ou des rapports directement dans Docs à partir d’un modèle. |
| Saisie de données via formulaire | Google Forms | Collecter des demandes de devis ou de support et les convertir en leads. |
| Calendrier partagé | Google Calendar | Planifier automatiquement des rendez‑vous, relances ou réunions. |
| Gestion de bases de données | Google Sheets | Exporter ou synchroniser des listes de contacts, devis ou stocks. |
| Envoi de mails personnalisés | Gmail | Communiquer en masse (newsletters, relances) sans passer par un CRM externe. |
2. Architecture générale de l’intégration
Dolibarr ↔ API Google Workspace (OAuth2) ↔ Services (Drive, Docs, Gmail, …)
-
Authentification unique (OAuth2)
- Création d’un projet Google Cloud → API activées → Consent screen configurée.
- Les mêmes clients OAuth sont réutilisables pour tous les services (Drive, Sheets, Calendar).
-
Moteur de connexion interne à Dolibarr
- Extension Google Workspace Connector (module officiel ou communauté).
- Gestion des tokens (access / refresh) stockés chiffrés dans la table
user_authoucron_files.
-
Module « Connector » dédié à chaque service
- Exemple : Google Drive Connector → CRUD dans
user_files. - Google Sheets Connector → Import/Export en temps réel.
- Exemple : Google Drive Connector → CRUD dans
-
Mécanismes d’événement
- Long‑polling ou Webhooks (Google Pub/Sub) pour réagir à des modifications (ex : nouveaux fichiers partagés).
- Scheduled Jobs (cron de Dolibarr) pour les synchronisations périodiques (ex : export de rapports chaque nuit).
- Front‑office (UI)
- Ajout d’onglets dans les fiches Prospects, Clients, Documents avec des boutons « Synchroniser avec Drive », « Créer Doc à partir du modèle », etc.
- Gestion des droits : chaque utilisateur possède ses propres credentials Google (ou ceux partagés au niveau de l’entreprise).
3. Étapes de mise en œuvre – Focus sur les API modernes
3.1 Créer le projet Google Cloud et obtenir le compte de service
| Action | Détails |
|---|---|
| 1. Créer le projet | Console → IAM & Admin → Nouveau projet → Nom : Dolibarr‑Google‑Integration. |
| 2. Activer les API | Google Drive API, Google Docs API, Google Sheets API, Google Calendar API, Google Forms API. |
| 3. Configurer OAuth consent screen | Type External (si vous avez plusieurs domaines) ou Internal (organisation). Ajoutez les scopes openid, email, profile, puis les scopes spécifiques (ex. https://www.googleapis.com/auth/drive.file). |
| 4. Créer les credentials | OAuth client ID → Web application → URI de redirection : https://your-dolibarr-domain.com/oauth2callback. |
| 5. Télécharger | credentials.json → Placez‑le dans /app/htdocs/custom/google/ (ou répertoire dédié). |
Astuce : Pour les déploiements multi‑sites, conservez le même
client_secretet créez des service accounts par environnement (dev / prod).
3.2 Installer le module Dolibarr « Google Workspace Connector »
| Méthode | Commande / Action |
|---|---|
| Via le Marketplace | Télécharger le zip dolibarr-google-workspace-connector-<version>.zip → Extraction dans /app/htdocs/custom/ puis activer le module dans Extensions → Modules. |
| Via Composer (dev) | composer require dolibarr/google-workspace-connector (si vous avez un environnement Docker/Composer). |
| Développement à la main | Référencez le répertoire htdocs/custom/google/ contenant les fichiers google.class.php, googleConfig.php, etc. |
Vérification : Après activation, un nouvel onglet Google Workspace apparaît dans le menu d’administration.
3.3 Implémenter le flux OAuth2 (exemple condensé)
// 1️⃣ Initialisation du client Google
require_once '/app/htdocs/custom/google/google.php';
$client = new Google_Client();
$client->setApplicationName('Dolibarr Google Connector');
$client->setScopes([Google_Service_Drive::DRIVE_FILE]);
$client->setAuthConfig('/app/htdocs/custom/google/credentials.json');
$client->setRedirectUri($dolibarr->cursus_url . '/oauth2callback');
// 2️⃣ Redirection vers Google si pas de token sauvegardé
if (!isset($_GET['code'])) {
$url = $client->createAuthUrl();
header('Location: '.$url);
exit;
}
// 3️⃣ Échange du code contre un token
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$_SESSION['google_token'] = $client->prepareAccessToken($token);
$client->setAccessToken($_SESSION['google_token']);
// 4️⃣ Sauvegarde du token dans la table `user_auth`
$dolibarr->saveCredentials($user->id, $client->getAccessToken());
Le code ci‑dessus peut être intégré dans le module de connexion Google Connector et réutilisé par tous les sous‑modules (Drive, Docs, Sheets).
3.4 Synchronisation de fichiers Drive ↔ Dolibarr
| Fonctionnalité | Implémentation |
|---|---|
| Attachment en Drive | Dans le formulaire de l’objet (ex. Facture), ajoutez un bouton « Uploader sur Drive ». Le module crée un fichier dans le dossier racine ou dans un dossier dédié ([user_id]/Documents/). |
| Récupération | Méthode Google_Drive_Connector::downloadFile($fileId, $destPath). Le fichier est affiché dans l’onglet Documents avec métadonnées (nom, créateur, date). |
| Versioning | Possibilité de créer vs remplacer. Utilisez files.update pour remplacer sans créer de doublon. |
| Gestion des permissions | Google_Service_Drive::permission->setEmail('user@example.com'); $permissions->setRole('writer'); → Le fichier reste partagé uniquement avec les contacts relevés dans Dolibarr (ex. partenaires externes). |
Exemple de script d’attachement automatique
$doc = new Google_Service_Drive($client);
$fileMetadata = new Google_Service_Drive\Google_Service_Drive_DriveFile([
'name' => $facture->label . '.pdf',
'parents' => ['1A2B3C4D5E6F7G8H9I0J']
]);
$content = file_get_contents($facture->local_path); // Chemin local du PDF
$file = $doc->files->create($fileMetadata, $content, 'application/pdf');
$file->setMimeType('application/pdf');
echo "Fichier créé : " . $file->getId();
3.5 Génération de documents DOCX/PDF via Google Docs
- Créer un modèle dans Google Drive (format Google Docs).
- Copier le modèle vers un fichier de travail via l’API Docs.
- Remplacer les tokens (
{{company_name}},{{client_name}},{{invoice_number}}) par les champs du record Dolibarr. - Exporter le résultat (
PDF,DOCX). - Enregistrer le fichier final dans Drive et le rattacher à la facture.
$docs = new Google_Service_Docs($client);
$copy = $docs->documents->copy($templateId, ['title' => $templateTitle]);
$body = $docs->documents->get($copy->id);
$body->textInsertion($replacePosition, $replacementText);
$final = $docs->documents->export($copy->id, 'application/pdf');
// Enregistrement Drive
$driveMetadata = new Google_Service_Drive\Google_Service_Drive_DriveFile([
'name' => $facture->label . '.pdf',
'parents' => ['1A2B3C4D5E6F7G8H9I0J']
]);
$driveFile = $doc->files->create($driveMetadata, $final, 'application/pdf');
3.6 Calendrier partagé – Planification d’activités
| Action | API concernée | Exemple d’utilisation |
|---|---|---|
| Création d’un rendez‑vous | Google Calendar API (events.insert) |
Lors de la création d’une opportunité, un event “Rencontre client X” est créé automatiquement dans le calendrier de l’utilisateur. |
| Mise à jour d’un délai | events.update |
Si la date de la clôture d’une offre change, l’event correspondant est modifié. |
| Synchronisation bidirectionnelle | Webhook Pub/Sub | Un changement de date dans Google Calendar met à jour le champ Date prévue de l’opportunité dans Dolibarr via webhook (/dolibarr/cron/google_calendar_sync.php). |
| Rappel automatique | Add reminders (addNotifications) |
Envoyer un email 30 min avant le début de la réunion. |
Script de mise à jour d’un événement
$calendar = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event([
'summary' => 'Réunion avec la Direction',
'start' => ['date' => $meetingDate, 'timeZone' => 'Europe/Paris'],
'end' => ['date' => $meetingDate, 'timeZone' => 'Europe/Paris'],
'reminders' => ['useDefault' => false, 'overrides' => [
['method' => 'popup', 'minutes' => 10]
]]
]);
$calendar->events->insert($primaryCalendarId, $event);
3.7 Intégration des Forms (formulaires web)
- Création d’un Form → Réponse → Google Sheets → Import automatique dans Dolibarr (CRM → Lead).
- Utilisation de Google Apps Script pour pousser les réponses via l’API Sheets directement dans Dolibarr ou placer un webhook (URL du Cerisier de Service) qui invoque un endpoint interne
/dolibarr/custom/google/forms_receiver.php.
// Endpoint : /dolibarr/custom/google/forms_receiver.php
$_POST['payload'] // JSON envoyé par la webhook de Google Forms
$formData = json_decode($_POST['payload'], true);
$dolibarr->createLead([
'firstname' => $formData['firstName'],
'email' => $formData['email'],
'phone' => $formData['phone'],
'source' => 'GoogleForm_'.$formId
]);
4. Quelques bonnes pratiques & astuces avancées
| # | Astuce | Pourquoi |
|---|---|---|
| 1️⃣ | Utiliser Service Accounts pour les actions non‑humaines (ex. génération de PDF, import massifs). | Les comptes de service n’ont pas de limitation d’interaction utilisateur et permettent de séparer les droits. |
| 2️⃣ | Limiter les scopes à drive.file quand les utilisateurs n’ont pas besoin d’accéder à tout le Drive. |
Réduit le risque d’escalade de privilèges et facilite le consentement OAuth. |
| 3️⃣ | Activer la compression du payload (JSON + GZIP) pour les appels massifs vers Sheets/Docs. | Diminue la latence réseau (synchronisation de 10 000 lignes). |
| 4️⃣ | Implémenter un cache (Redis ou file cache) des réponses Google (ex. liste des dossiers Drive) pour éviter les appels redondants. | Améliore la performance et le quota API. |
| 5️⃣ | Centraliser les tokens de rafraîchissement dans une table独立的 (google_oauth_tokens) afin de les renouveler automatiquement via le job cron/google_refresh_tokens.php. |
|
| 6️⃣ | Tester chaque connecteur avec les environnements de pré‑production et faire valider un audit sécurité (OAuth client secret, stockage des tokens). | |
| 7️⃣ | Documenter les limitations de chaque API (quotas quotidiens, quotas associé à chaque type d’opération) et prévoir des back‑offs en cas de limites. | |
| 8️⃣ | Utiliser Webhooks Pub/Sub plutôt que le polling pour les champs qui changent fréquemment (ex. Drive, Calendar). | Réaction instantanée, économies de quota. |
5. Exemple de flux complet – Du devis au paiement
- Création du devis → Prospect →
Save. - Bouton “Envoyer avec Gmail” → Le module ouvre Gmail avec un modèle pré‑rempli (
{{client_name}},{{total}}). L’utilisateur confirme → Envoi automatisé via Gmail API. - Signature du devis → Le prospect le place dans Drive → Le document est remonté dans l’onglet Documents du devis.
- Clôture du devis → Génération d’une facture à partir du modèle PDF créé via Google Docs.
- Envoi de la facture → Rappel automatique (30 jours) via Google Calendar + Gmail.
- Paiement reçu → Notification par Gmail → Création d’un event “Paiement reçu” → Mise à jour du statut de la facture.
- Archivage → Le PDF final (facture) est déplacé vers un dossier Archives dans Drive, avec les métadonnées de paiement.
6. Ressources complémentaires
| Type | Lien |
|---|---|
| Documentation officielle Google | https://developers.google.com/apis-credentials |
| Guide API Dolibarr | https://wiki.dolibarr.org/fr/Development:Modules |
| Tutoriel OAuth2 dans Dolibarr | https://github.com/Dolibarr/dolibarr-contrib/tree/master/modules/google |
| Exemple de connecteur complet | https://github.com/Dolibarr/dolibarr-google-workspace-connector |
| Google Cloud Console | https://console.cloud.google.com/ |
| Best Practices OAuth | https://oauth.net/2/ |
| Stack Overflow – “Google Workspace integration with Dolibarr” | https://stackoverflow.com/questions/xxxx |
7. Conclusion
En combinant l’architecture modulaire de Dolibarr avec les API modernes de Google Workspace (Drive, Docs, Sheets, Calendar, Forms, Gmail), vous pouvez :
- Éviter la double saisie et économiser du temps.
- Collaborer en temps réel via des documents partagés.
- Automatiser les workflows (déals → factures → paiement) sans outil tiers.
- Conserver le contrôle sur la sécurité (OAuth2, scopes limités, stockage chiffré).
- Étendre facilement grâce à la structure d’extensions et à la communauté open‑source.
Le guide ci‑dessus fournit tout le nécessaire pour passer d’une simple connexion ponctuelle à une intégration complète, automatisée et évolutive entre Dolibarr et Google Workspace. Vous avez alors la possibilité de personnaliser chaque connecteur selon vos processus internes, tout en profitant d’une solution 100 % open‑source et prête pour le cloud.
Prêt à mettre les mains dans le code ?
Commencez par créer le projet sur Google Cloud, activez les API requises, et suivez les étapes de la section 3 pour installer le Google Workspace Connector dans votre instance Dolibarr. Vous serez rapidement en mesure de voir les premiers fichiers apparaître dans Drive depuis la fiche d’un client !
Bonne intégration ! 🚀