Aller au contenu principal

Référence API

SheetManager

La classe principale pour interagir avec Google Sheets.

Constructeur

const manager = new SheetManager(privateKey: string, clientEmail: string, sheetId: string);
ParamètreTypeDescription
privateKeystringLa clé privée de votre fichier JSON de compte de service.
clientEmailstringL'adresse e-mail de votre fichier JSON de compte de service.
sheetIdstringL'identifiant de votre feuille de calcul Google Sheets.

Méthodes

init(userPath, sheetNames?)

Lit les données de la feuille de calcul et écrit les fichiers JSON sur le disque. C'est la méthode principale pour la plupart des cas d'utilisation.

await manager.init(userPath: string, sheetNames?: string[]): Promise<void>
ParamètreTypeRequisDescription
userPathstringOuiChemin du répertoire où les fichiers JSON seront écrits.
sheetNamesstring[]NonNoms spécifiques des feuilles à traiter. Si omis, toutes les feuilles sont traitées.

Lorsque plusieurs feuilles sont traitées, leurs données sont fusionnées par langue — les clés de toutes les feuilles sont combinées dans un seul fichier JSON par langue.


read(sheetPosition?)

Lit les données d'une seule feuille par sa position d'index.

await manager.read(sheetPosition?: number): Promise<SheetData>
ParamètreTypeDéfautDescription
sheetPositionnumber0Index de la feuille à lire (commence à zéro).

Retourne : SheetData — Un objet où chaque clé est un code de langue et la valeur contient les données de traduction.


readByName(sheetName)

Lit les données d'une feuille spécifique par son nom.

await manager.readByName(sheetName: string): Promise<SheetData>
ParamètreTypeDescription
sheetNamestringLe nom exact de l'onglet de la feuille.

Lève une erreur si le nom de la feuille n'est pas trouvé.


readAllSheets()

Lit les données de toutes les feuilles de la feuille de calcul.

await manager.readAllSheets(): Promise<{ [sheetName: string]: SheetData }>

Retourne : Un objet où chaque clé est le nom de la feuille et la valeur est le SheetData correspondant.


write(data, directoryPath)

Écrit les données de traduction dans des fichiers JSON. Un fichier est créé par langue.

manager.write(data: SheetData, directoryPath: string): void
ParamètreTypeDescription
dataSheetDataL'objet de données retourné par read, readByName, ou readAllSheets.
directoryPathstringRépertoire où les fichiers JSON seront sauvegardés. Créé s'il n'existe pas.
info

Cette méthode est synchrone dans sa logique de création de fichiers (utilisant fs.writeFile avec des callbacks en interne). Elle ne retourne pas une Promise.


listSheets()

Retourne les noms de toutes les feuilles de la feuille de calcul.

await manager.listSheets(): Promise<string[]>

Retourne : Un tableau de noms d'onglets de feuilles.


readLocal(directoryPath)

Lit les fichiers JSON d'un répertoire local et les retourne en format SheetData.

manager.readLocal(directoryPath: string): SheetData
ParamètreTypeDescription
directoryPathstringChemin du répertoire contenant les fichiers JSON de traduction.

Retourne : SheetData — Un objet où chaque clé est un code de langue et la valeur contient les données de traduction.

Lève une erreur si le répertoire n'existe pas.


push(directoryPath, sheetName?)

Lit les fichiers JSON locaux et les envoie vers Google Sheets. Les objets imbriqués sont aplatis en notation pointée.

await manager.push(directoryPath: string, sheetName?: string): Promise<void>
ParamètreTypeRequisDescription
directoryPathstringOuiChemin du répertoire contenant les fichiers JSON de traduction.
sheetNamestringNonNom de la feuille cible. Si fourni et inexistant, une nouvelle feuille est créée.

sync(directoryPath, options?)

Synchronisation bidirectionnelle entre les fichiers JSON locaux et Google Sheets. Permet de garder les deux sources en phase selon la stratégie choisie.

await manager.sync(directoryPath: string, options?: SyncOptions): Promise<SyncResult>
ParamètreTypeRequisDescription
directoryPathstringOuiChemin du répertoire contenant les fichiers JSON de traduction.
optionsSyncOptionsNonOptions de synchronisation (voir ci-dessous).

Retourne : SyncResult — Un objet contenant le résumé des modifications effectuées.

Stratégies de synchronisation

StratégieDescription
localLes valeurs locales écrasent les valeurs distantes en cas de conflit.
remoteLes valeurs distantes écrasent les valeurs locales en cas de conflit.
merge (défaut)Combine les deux sources, préfère les valeurs locales en cas de conflit, et remplit les valeurs manquantes des deux côtés.

Types

SheetData

interface NestedObject {
[key: string]: string | NestedObject | undefined;
}

interface SheetData {
[key: string]: NestedObject;
}

SyncStrategy

type SyncStrategy = 'local' | 'remote' | 'merge';

SyncOptions

interface SyncOptions {
strategy?: SyncStrategy; // défaut: 'merge'
sheetName?: string;
createSheet?: boolean; // défaut: false
}
PropriétéTypeDéfautDescription
strategySyncStrategy'merge'Stratégie de résolution des conflits.
sheetNamestringundefinedNom de la feuille cible.
createSheetbooleanfalseSi true, crée la feuille si elle n'existe pas.

SyncResult

interface SyncResult {
added: { local: number; remote: number };
updated: { local: number; remote: number };
languages: string[];
}
PropriétéTypeDescription
added{ local: number; remote: number }Nombre de clés ajoutées localement et à distance.
updated{ local: number; remote: number }Nombre de clés mises à jour localement et à distance.
languagesstring[]Liste des langues traitées lors de la synchronisation.

SheetData est un objet où :

  • Chaque clé de premier niveau est un code de langue (correspondant aux en-têtes de colonnes de votre feuille de calcul).
  • Chaque valeur est un objet imbriqué de paires clé-valeur de traduction.
  • Les clés en notation par points (par exemple, nav.home) sont automatiquement développées en objets imbriqués.

Exemple de sortie :

{
"en": {
"greeting": "Hello",
"nav": {
"home": "Home",
"about": "About"
}
},
"fr": {
"greeting": "Bonjour",
"nav": {
"home": "Accueil",
"about": "A propos"
}
}
}