Google Apps Script fournit plus de 30 services intégrés pour interagir avec les données utilisateur, d'autres systèmes Google et des systèmes externes. Ces services sont fournis sous la forme d'objets globaux semblables à l'objet Math
standard de JavaScript. Par exemple, tout comme Math
propose des méthodes telles que random()
et des constantes comme PI
, le service Spreadsheet d'Apps Script propose des méthodes telles que openById(id)
, des classes (objets enfants) comme Range
et des énumérations comme DataValidationCriteria
.
La documentation de référence sur les services qui contrôlent les produitsGoogle Workspace est rassemblée dans la sectionGoogle Workspace Services, sous l'en-tête "Référence" de la barre latérale de ce site. Les services utilitaires (pour la création d'interfaces utilisateur, l'analyse XML ou l'écriture de données de journaux) sont collectés dans la section "Services de script".
Fonctionnalités JavaScript modernes
Apps Script est compatible avec deux environnements d'exécution JavaScript: l'environnement d'exécution moderne V8 et un ancien environnement d'exécution basé sur l'interprète JavaScript Rhino de Mozilla.
L'environnement d'exécution V8 est compatible avec la syntaxe et les fonctionnalités modernes d'ECMAScript. L'environnement d'exécution Rhino est basé sur l'ancienne norme JavaScript 1.6, ainsi que sur quelques fonctionnalités de 1.7 et 1.8. Vous pouvez choisir librement l'environnement d'exécution à utiliser avec votre script, mais l'environnement d'exécution V8 est vivement recommandé.
Chaque environnement d'exécution est compatible avec les classes et objets JavaScript disponibles pour votre script, en plus des services Google avancés et intégrés. Vos scripts peuvent utiliser des objets courants tels que Array
, Date
, RegExp
, etc., ainsi que les objets globaux Math
et Object
.
Utiliser la saisie semi-automatique
L'éditeur de script fournit une fonctionnalité d'assistance au contenu, plus communément appelée "Saisie semi-automatique", qui révèle les objets globaux, ainsi que les méthodes et les énumérations valides dans le contexte actuel du script. Des suggestions de saisie semi-automatique s'affichent automatiquement chaque fois que vous saisissez un point après un objet global, une énumération ou un appel de méthode qui renvoie une classe Apps Script. Exemple :
- Si vous saisissez le nom complet d'un objet global ou en sélectionnez un dans la saisie semi-automatique, puis saisissez
.
(un point), toutes les méthodes et énumérations de cette classe s'affichent. - Si vous saisissez quelques caractères, toutes les suggestions valides commençant par ces caractères s'affichent.
Comprendre les objets globaux
Chaque service fournit au moins un objet global (de niveau supérieur). Par exemple, l'service Gmail n'est accessible que depuis l'objet GmailApp
. Certains services fournissent plusieurs objets globaux. Par exemple, le service de base comprend quatre objets globaux : Browser
, Logger
, MimeType
et Session
.
Méthodes d'appel
Les objets globaux de presque tous les services intégrés ou avancés incluent les méthodes qui renvoient des données ou une classe Apps Script. Les scripts effectuent des appels de méthode au format suivant:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
Par exemple, un script peut envoyer un e-mail en appelant la méthode sendEmail(recipient, subject, body)
du service Gmail comme suit:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
Si une méthode renvoie une autre classe Apps Script, vous pouvez enchaîner les appels de méthode sur une seule ligne. (Les types de retour s'affichent à la fois dans la saisie semi-automatique et dans la documentation de référence d'une méthode.) Par exemple, la méthode DocumentApp.create()
renvoie un Document
. Par conséquent, les deux sections de code suivantes sont équivalentes:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()
.appendParagraph('New paragraph.');
Accéder aux cours enfants
Chaque service inclut une ou plusieurs classes enfants auxquelles il est impossible d'accéder depuis le niveau supérieur, contrairement à un objet global. Vous ne pouvez pas utiliser le mot clé new
pour créer ces classes, comme vous pouvez le faire avec les classes JavaScript standards telles que Date
. Vous ne pouvez accéder à une classe enfant qu'en appelant une méthode qui la renvoie. Si vous ne savez pas comment accéder à une classe spécifique, consultez la page racine de la documentation de référence du service et recherchez une méthode qui renvoie la classe souhaitée.
Traiter les interfaces
Quelques services incluent des classes spéciales désignées comme "interfaces" dans la documentation de référence. Il s'agit de classes génériques utilisées comme types de retour pour les méthodes qui ne peuvent pas déterminer le type précis à l'avance. Par exemple, la méthode Document service (Service de documents) Body.getChild(childIndex)
renvoie un objet Element
générique.
Element
est une interface qui représente une autre classe, éventuellement une Paragraph
ou une Table
. Les objets Interface sont rarement utiles en eux-mêmes. À la place, vous devez généralement appeler une méthode telle que Element.asParagraph()
pour caster l'objet dans une classe précise.
Utiliser des énumérations
La plupart des services incluent quelques énumérations (types énumérés) de valeurs nommées. Par exemple, le service Drive utilise les énumérations Access
et Permission
pour déterminer quels utilisateurs ont accès à un fichier ou à un dossier. Dans la plupart des cas, vous accédez à ces énumérations à partir de l'objet global. Par exemple, un appel à la méthode Folder.setSharing(accessType, permissionType)
se présente comme suit:
// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);