1. Livres & vidéos
  2. Google Apps Script
  3. Gérer un classeur (Spreadsheet)
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

Gérer un classeur (Spreadsheet)

Introduction

Nous avons vu comment interagir avec des feuilles et des plages de cellules, mais il est tout aussi important de savoir comment gérer le classeur dans son ensemble : le créer, le renommer, le dupliquer, ajouter des feuilles, et bien plus encore.

Créer, ouvrir et identifier un classeur

Pour commencer, il est essentiel de maîtriser les bases de la gestion des classeurs. Nous allons donc découvrir comment Apps Script permet de manipuler un classeur, même s’il n’est pas ouvert dans le navigateur.

1. Créer et dupliquer un classeur : create() et copy()

La classe SpreadsheetApp met à disposition des méthodes pour créer de nouveaux classeurs de A à Z. C’est idéal pour des tâches récurrentes, comme générer un rapport mensuel ou un suivi hebdomadaire, par exemple.

Pour créer un nouveau classeur, utilisez simplement la méthode create(), qui prend en paramètre le nom du classeur à générer :

// Create a new spreadsheet 
const newSpreadsheet = SpreadsheetApp.create("Mon nouveau classeur"); 
 
// Log ID and URL 
Logger.log(`ID : ${newSpreadsheet.getId()}`); 
Logger.log(`URL : ${newSpreadsheet.getUrl()}`); 

Parfois, il est plus simple de partir d’un classeur existant, par exemple un modèle de rapport ou un template. Pour cela, vous pouvez utiliser la méthode makeCopy() qui se trouve sur la classe File du service DriveApp.

const fileId = 'TEMPLATE_ID'; 
const name = "March Report"; ...

Gérer les accès et les autorisations du classeur

La gestion des accès vous permet de définir qui peut voir, commenter ou modifier l’intégralité de votre classeur. C’est le même niveau de contrôle que celui dont vous disposez en cliquant sur le bouton Partager dans l’interface de Google Sheets. Avec Apps Script, vous pouvez automatiser ce processus, ce qui est parfait pour les workflows où les autorisations doivent changer dynamiquement.

1. Donner un accès de modification ou de lecture

La gestion d’un classeur ne s’arrête pas à sa simple création ou à sa modification. Il est essentiel de pouvoir contrôler qui peut le consulter ou le modifier, surtout dans un environnement collaboratif. Le service SpreadsheetApp, couplé à la classe Spreadsheet, vous offre les outils nécessaires pour gérer les autorisations et protéger vos données par script. C’est une fonctionnalité puissante pour automatiser la sécurisation de vos fichiers. 

Dans Google Sheets, il existe différents niveaux d’accès que vous pouvez attribuer à un utilisateur ou à un groupe. Les rôles principaux que vous gérerez avec Apps Script sont ceux d’éditeur et de lecteur.

  • Un éditeur a le droit de modifier le contenu du classeur, d’ajouter ou de supprimer des feuilles, de le partager avec d’autres personnes, ou encore de le supprimer. Un éditeur dispose d’un contrôle total.

  • Un lecteur peut uniquement consulter le contenu du classeur. Il ne peut rien modifier, mais il peut en faire une copie ou l’imprimer.

Le service SpreadsheetApp met à votre disposition plusieurs méthodes pour gérer les autorisations :

  • addEditor(emailAddress) et addEditors(emailAddresses) pour donner des droits d’édition.

  • addViewer(emailAddress) et addViewers(emailAddresses) pour donner un accès en lecture seule.

  • removeEditor(emailAddress) et removeEditors(emailAddresses)pour retirer les droits d’édition.

  • removeViewer(emailAddress) et removeViewers(emailAddresses) pour retirer les droits de lecture.

Pour donner des droits de modification à une ou plusieurs personnes, vous pouvez utiliser les méthodes addEditor() ou addEditors().

function shareSpreadsheet() { ...

Manipulation avancée des feuilles

Une fois que vous maîtrisez la gestion des classeurs et des autorisations, la suite logique consiste à pouvoir manipuler les feuilles qu’ils contiennent. En Apps Script, chaque feuille de calcul est un objet de la classe Sheet. Le service SpreadsheetApp et la classe Spreadsheet vous permettent d’interagir avec ces objets pour les gérer de manière dynamique.

1. Ajouter des feuilles

Un classeur Google Sheets peut contenir jusqu’à 200 feuilles de calcul, à moins que la limite de cellules ne soit atteinte plus tôt. Ces feuilles sont des objets de la classe Sheet dans Apps Script et sont accessibles via les méthodes de la classe Spreadsheet, comme détaillé au chapitre Structure d’un classeur et introduction à SpreadsheetApp.

 Pour ajouter une nouvelle feuille, utilisez la méthodeinsertSheet(). Par défaut, la nouvelle feuille est insérée avec le nom « SheetX », X étant le nombre de feuilles déjà présentes dans le classeur, mais vous pouvez lui donner directement un nom personnalisé :

function addSheet() { 
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  const newSheet = spreadsheet.insertSheet("Invoice"); 
} 

Cette fonction va insérer une nouvelle feuille au classeur actif, en dernière position, et la renommer « Invoice ».

Il est également possible d’insérer une feuille en copiant une feuille existante (structure et formatage inclus), grâce à la fonction copyTo() :

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
const template = spreadsheet.getSheetByName("Template"); 
const copy = template.copyTo(spreadsheet).setName("Invoice_March"); 

Cette méthode est intéressante car il est possible de spécifier le classeur de destination, et donc de copier une feuille modèle dans n’importe quel autre classeur auquel nous avons accès.

Revenons à la méthode insertSheet. La documentation révèle que cette fonction offre une grande polyvalence, permettant de nombreuses utilisations grâce à ses diverses...