Aller au contenu principal

Utilisation de base

Démarrage rapide avec init​

La manière la plus simple d'utiliser sheets-translate-to-json est la méthode init, qui lit toutes les feuilles et écrit les fichiers JSON en un seul appel.

import { SheetManager } from 'sheets-translate-to-json';

const manager = new SheetManager(
process.env.PRIVATE_KEY,
process.env.CLIENT_EMAIL,
process.env.SHEET_ID
);

await manager.init('./translations');

Cela va :

  1. Se connecter à votre Google Sheet
  2. Lire toutes les feuilles et fusionner leurs données par langue
  3. Créer un fichier JSON par langue dans ./translations/ (par exemple, en.json, fr.json, es.json)

Sélectionner des feuilles spécifiques​

Si votre feuille de calcul a plusieurs onglets et que vous n'en voulez que certains :

await manager.init('./translations', ['Homepage', 'Settings']);

Seules les feuilles nommées "Homepage" et "Settings" seront traitées, et leurs données fusionnées.

Séparer read et write​

Pour plus de contrôle, utilisez read et write séparément :

const manager = new SheetManager(privateKey, clientEmail, sheetId);

// Read data from the first sheet
const data = await manager.read();

// Optionally transform the data here...

// Write to disk
manager.write(data, './translations');

Lire par nom de feuille​

const data = await manager.readByName('Homepage');
manager.write(data, './translations');

Lire toutes les feuilles individuellement​

const allData = await manager.readAllSheets();

// allData is { [sheetName]: SheetData }
for (const [sheetName, data] of Object.entries(allData)) {
console.log(`Sheet "${sheetName}" has ${Object.keys(data).length} languages`);
}

Lister les feuilles disponibles​

const sheetNames = await manager.listSheets();
console.log(sheetNames); // ['Homepage', 'Settings', 'Emails']

Structure de sortie​

Étant donné une feuille de calcul avec ces données :

keyenfr
helloHelloBonjour
nav.homeHomeAccueil
nav.aboutAboutA propos

Le fichier en.json généré sera :

{
"hello": "Hello",
"nav": {
"home": "Home",
"about": "About"
}
}

Les clés en notation par points sont automatiquement développées en objets imbriqués.

Exécuter votre script​

# JavaScript
node your-script.js

# TypeScript (with ts-node)
npx ts-node your-script.ts

# TypeScript (with tsx)
npx tsx your-script.ts

Résultat​

Après l'exécution de votre script, un dossier translations/ est créé avec les fichiers JSON générés :

Dossier avec les fichiers JSON

Exemple de sortie JSON

Synchronisation bidirectionnelle​

La méthode sync permet de garder vos fichiers JSON locaux et Google Sheets en phase. Elle détecte les différences entre les deux sources et les réconcilie selon la stratégie choisie.

Synchronisation de base (stratégie merge)​

Par défaut, sync utilise la stratégie merge : elle combine les deux sources, préfère les valeurs locales en cas de conflit, et remplit les valeurs manquantes des deux côtés.

const manager = new SheetManager(privateKey, clientEmail, sheetId);

const result = await manager.sync('./translations');
console.log(result);
// {
// added: { local: 2, remote: 5 },
// updated: { local: 0, remote: 3 },
// languages: ['en', 'fr', 'es']
// }

Privilégier les valeurs locales​

Utilisez la stratégie local pour que vos fichiers JSON locaux écrasent les valeurs distantes en cas de conflit :

await manager.sync('./translations', { strategy: 'local' });

Privilégier les valeurs distantes​

Utilisez la stratégie remote pour que les valeurs de Google Sheets écrasent les valeurs locales en cas de conflit :

await manager.sync('./translations', { strategy: 'remote' });

Synchroniser avec une feuille spécifique​

Vous pouvez cibler une feuille spécifique et la créer si elle n'existe pas :

await manager.sync('./translations', {
sheetName: 'Homepage',
createSheet: true,
strategy: 'merge'
});

Envoyer les fichiers locaux vers Google Sheets​

Si vous souhaitez uniquement envoyer vos fichiers JSON locaux vers Google Sheets sans synchronisation bidirectionnelle, utilisez push :

await manager.push('./translations');

// Ou vers une feuille spécifique
await manager.push('./translations', 'Homepage');

Lire les fichiers locaux​

Vous pouvez aussi lire les fichiers JSON locaux en format SheetData sans accéder à Google Sheets :

const data = manager.readLocal('./translations');
console.log(data);
// { en: { greeting: "Hello", ... }, fr: { greeting: "Bonjour", ... } }