1. Livres & vidéos
  2. Google Apps Script
  3. Stockage et persistance des données
Extrait - Google Apps Script Créez vos outils pour automatiser Google Workspace
Extraits du livre
Google Apps Script Créez vos outils pour automatiser Google Workspace Revenir à la page d'achat du livre

Stockage et persistance des données

Introduction

Dans certains types de projets (modules complémentaires, applications web ou automatisations multiutilisateurs), on a souvent besoin de configurations persistantes, de mémoriser des états entre exécutions, ou bien d’optimiser les performances.

Ce chapitre rassemble des techniques pour rendre les projets Apps Script plus robustes, rapides et sûrs, tout en restant simples à maintenir.

Le service PropertiesService

1. Qu’est-ce que les propriétés et comment y accéder ?

Dans le chapitre Présentation de l’éditeur, nous avons vu le panel de configuration d’un projet Apps Script. Cette page permet notamment d’ajouter des propriétés, sous forme de paires clé-valeur propres au projet.

images/19RI01.png

Depuis la page Project settings, vous pouvez créer manuellement jusqu’à 50 propriétés personnalisées (paires clé-valeur de type chaîne).

Au-delà de 50, elles doivent être ajoutées par le code en utilisant les méthodes décrites dans la section suivante.

Les propriétés de script définies depuis la page des paramètres ne peuvent pas référencer des variables du script.

2. Présentation du service PropertiesService

Le service PropertiesService permet de gérer automatiquement ces propriétés. Il est surtout utilisé pour conserver des réglages développeur ou des préférences utilisateur.

Les propriétés sont isolées : elles ne sont jamais partagées entre différents scripts.

PropertiesService propose trois méthodes, chacune renvoyant un objet Properties similaire, aussi appelé magasin, mais avec des droits d’accès différents :

  • getScriptProperties() : accès aux données partagées entre tous les utilisateurs du projet, utile pour les données de configuration d’une application, clés API ou nom et mot de passe d’une base de données externe du développeur. 

  • getUserProperties() : accès uniquement aux données de l’utilisateur actuel, utile pour des paramètres spécifiques à l’utilisateur.

  • getDocumentProperties() : accès aux données partagées par tous...

Bonnes pratiques de stockage de variables globales

1. Un fichier Settings dans le projet

Pour faciliter le stockage de variables globales, notamment lorsque l’on travaille avec Google Sheets, il peut être utile de créer un fichier pour y stocker ses variables.

Personnellement, j’aime par exemple stocker les range relatifs à une feuille, en particulier sous forme d’objet, comme suit :

// Settings.gs 
const PANNEAU_DE_CONTROL_SHEET = { 
  ranges: { 
    yearCell: 'C7', 
    operationTypeCodeCell: 'D7', 
    operationCodeCell: 'E7' 
  }, 
  sheetName: "Panneau de contrôle" 
}; 

Cela évite de devoir mettre à jour toutes les occurrences de yearCell par exemple, si demain une colonne est ajoutée à la feuille.

On peut également envisager une séparation entre un mode production et un mode développement, grâce à des variables globales propres à chaque environnement, et à un état GLOBAL_MODE stocké dans une Script Property.

2. Stocker un JSON en propriété

Il est aussi possible de stocker un objet JSON dans une Script Property. Comme les propriétés n’acceptent que des chaînes de caractères, il faut convertir l’objet...

Le service CacheService

Un cache est une mémoire temporaire. Il stocke des valeurs calculées pour pouvoir les relire rapidement lors d’exécutions suivantes.

Les données expirent après un délai (TTL) et peuvent disparaître à tout moment. Ce n’est pas un stockage persistant. Il sert à réduire les appels coûteux (API, lecture Drive/Sheets) et à accélérer les accès répétés.

TTL signifie « Time To Live », c’est la durée pendant laquelle les informations sont stockées en cache par un serveur avant d’être actualisées, influençant la rapidité de propagation des changements sur un site web.

Apps Script met à disposition un service de cache, CacheService, pour optimiser les accès aux ressources coûteuses et lentes.

1. Présentation de CacheService

CacheService fournit trois portées :

  • getScriptCache() partage les données entre tous les utilisateurs du projet. 

  • getUserCache() isole les valeurs par utilisateur.

  • getDocumentCache() attache le cache au fichier conteneur (Script lié).

Les clés et les valeurs sont des chaînes ; un objet se sérialise en JSON à l’écriture et se parse à la lecture. Une lecture peut renvoyer null si l’entrée a expiré ou si elle...