1.0.7 • Published 6 months ago

@zqsdprod/gsheet-service v1.0.7

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

ZQSD Common Utils

GSheetService

Installation

npm i @zqsdprod/gsheet-service

Usage

Ce service permet de récupérer les données d'une feuille de calcul Google Sheet uniquement si celle-ci est publique.

Dans un premier temps, il faut importer le module et le configurer avec la clé d'API Google :

import { GSheetModule } from '@zqsdprod/gsheet-service';

@NgModule({
  declarations: [],
  imports: [
    GSheetModule.forRoot({ apiKey: '...' })
  ],
  exports: []
})
export class AppModule {}

Ensuite vous pouvez importer le service où vous le souhaitez.

import { GSheetService } from '@zqsdprod/gsheet-service';

@Component({})
export class MyComponent {
  constructor(private sheetService: GSheetService) {
  
  }
}

Enregistrer une feuille

Vous devez commencer par enregistrer dans le service la sheet avec son ID (trouvable dans l'url) et le nom de votre choix.

import { GSheetService } from '@zqsdprod/gsheet-service';

@Component({})
export class MyComponent {
  constructor(private sheetService: GSheetService) {
		this.sheetService.registerSheet('mon-tournoi', 'ID_DU_SHEET')
  }
}

Ensuite, vous pouvez récupérer les données de la feuille en question.

Attention : l'opération est asynchrone. Vous devrez utiliser rxjs pour récupérer les données.

this.sheetService
  .load('mon-tournoi')
  .fromPage('Feuille 1')
  .fromRange('A1:B200')
  .getValues()
  .subscribe({
    next: (data: SheetResults) => {
      /**
       * Gérer les résultats ici, ou chainez les opérations avec rxjs
       * pour les transformer
       * 
       * Les data récupérées sont de type SheetResults :
       * 
       * interface SheetResults {
       *    majorDimension: string;
       *    range: string;
       *    values: string[][];
       * }
       *  
       */
    },
    error: (err) => {
      console.error(err);
      // Gestion d'erreur ici
    }
  });

Vous pouvez aussi extraire les headers pour avoir un typage plus agréable :

this.sheetService
  .load('mon-tournoi')
  .fromPage('Feuille 1')
  .fromRange('A1:B200')
  .getRowsWithHeaders<VotreType>()
  .subscribe({
    next: (data: SheetRow<VotreType>) => {
      /**
       * Gérer les résultats ici, ou chainez les opérations avec rxjs
       * pour les transformer
       * 
       * Les data récupérées sont de type SheetRow<VotreType>
       * Le champ 'id' est populé automatiquement avec le numéro de la lighe du gsheet
       * 
       *  
       */
    },
    error: (err) => {
      console.error(err);
      // Gestion d'erreur ici
    }
  });
1.0.7

6 months ago

1.0.6

6 months ago

1.0.5

6 months ago

1.0.4

6 months ago

1.0.3

6 months ago

1.0.2

6 months ago

1.0.1

6 months ago

1.0.0

6 months ago