Services Google intégrés

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 en tant qu'objets globaux semblables à l'objet Math standard de JavaScript. Par exemple, tout comme Math propose des méthodes telles que random() et des constantes telles que 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 telles que DataValidationCriteria.

La documentation de référence des services qui contrôlent lesGoogle Workspace produits est recueillie 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, par exemple) 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 V8 moderne et un environnement d'exécution plus ancien fourni par l'interpréteur JavaScript Rhino de Mozilla.

L'environnement d'exécution V8 est compatible avec la syntaxe et les fonctionnalités ECMAScript modernes. L'environnement d'exécution Rhino est basé sur l'ancienne norme JavaScript 1.6, ainsi que sur certaines fonctionnalités des versions 1.7 et 1.8. Vous pouvez choisir librement l'environnement d'exécution à utiliser avec votre script. Cependant, nous vous recommandons vivement d'utiliser l'environnement d'exécution V8.

Chaque environnement d'exécution est compatible avec les classes et objets JavaScript disponibles pour votre script en plus des services Google avancés intégrés. Vos scripts peuvent utiliser des objets courants tels que Array, Date, RegExp, etc., ainsi que des objets globaux Math et Object.

Utiliser la saisie semi-automatique

L'éditeur de scripts fournit une fonctionnalité d'assistance au contenu, plus couramment appelée "saisie semi-automatique", qui affiche les objets globaux, ainsi que les méthodes et énumérations valides dans le contexte actuel du script. Les suggestions de saisie semi-automatique apparaissent automatiquement chaque fois que vous saisissez un point après un appel d'objet, d'énumération ou de méthode global renvoyant une classe Apps Script. Exemple :

  • Si vous saisissez le nom complet d'un objet global ou que vous en sélectionnez un dans la saisie semi-automatique, puis que vous saisissez . (un point), toutes les méthodes et énumérations de cette classe s'affichent.
  • Si vous saisissez quelques caractères, des 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, le service Gmail n'est accessible qu'à partir de 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 avancés ou intégrés incluent des méthodes qui renvoient des données ou une classe Apps Script. Les scripts effectuent les 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 ligne. (Les types renvoyés sont affichés à 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. Ainsi, les deux sections de code suivantes sont équivalentes:

var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');

// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');

Accéder aux classes enfants

Chaque service inclut une ou plusieurs classes enfants qui ne sont pas accessibles au niveau supérieur comme un objet global. Vous ne pouvez pas utiliser le mot clé new pour construire ces classes, comme vous pouvez le faire avec les classes JavaScript standards comme 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 en particulier, consultez la page racine de la documentation de référence du service et recherchez une méthode qui renvoie la classe souhaitée.

Gérer les interfaces

Quelques services incluent des classes spéciales étiquetées "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 Service de document Body.getChild(childIndex) renvoie un objet Element générique. Element est une interface qui représente une autre classe, éventuellement Paragraph ou Table. Les objets d'interface sont rarement utiles seuls. Toutefois, vous pouvez généralement appeler une méthode telle que Element.asParagraph() pour renvoyer l'objet vers 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 les utilisateurs ayant accès à un fichier ou à un dossier. Dans presque tous les cas, vous accédez à ces énumérations à partir de l'objet global. 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);