Autres scripts d’applications

Dans la cinquième et dernière partie du cours, j’examine quelques fonctionnalités supplémentaires utiles d’Apps Script que vous pouvez utiliser pour approfondir votre code et explore où vous pouvez aller ensuite avec votre codage Apps Script.

Parcourez la page dans l’ordre si vous apprenez, ou utilisez les liens ci-dessous pour accéder à des éléments spécifiques :

Jusqu’à présent dans le cours, je vous ai appris à travailler avec des feuilles de calcul, des documents et des formulaires, à automatiser l’utilisation de if et des boucles, et à utiliser des déclencheurs pour exécuter du code Apps Script à la suite d’événements. Comme vous l’aurez vu dans les projets, cela peut permettre de faire beaucoup de choses avec Apps Script, en automatisant des choses comme la création de documents ou en faisant en sorte que des choses se produisent lorsqu’un formulaire est soumis.

En cours de route, nous avons également examiné une gamme de concepts JavaScript utiles pour Apps Script, tels que les variables, les tableaux, les boucles, les conditions if et les objets. Il y a eu beaucoup de pièces du puzzle à assembler !

Pour cette dernière partie du cours, nous nous concentrerons sur certains éléments et fonctionnalités supplémentaires qui peuvent faire aller plus loin votre code et vous permettre d’améliorer le genre de choses que vous pouvez désormais construire en utilisant les compétences des semaines précédentes.

Introduction à l’amélioration de votre code

Tout au long de ce cours, je vous ai montré une ou deux façons d’écrire des choses dans Apps Script. Au fur et à mesure que vous avez réalisé les projets, vous avez peut-être trouvé des façons différentes de faire les choses par rapport à la façon dont nous avons choisi de le faire – c’est génial ! En codage, il existe souvent de nombreuses façons de faire les choses et il est bon d’explorer différentes options.

Le code Apps Script peut être « amélioré » en le rendant plus efficace à exécuter, en facilitant l’interaction des utilisateurs avec le système ou en le rendant moins susceptible de tomber en panne ou d’avoir des erreurs. Au fur et à mesure que vous développez vos compétences Apps Script, vous découvrirez des moyens d’y parvenir grâce à l’expérience (et en demandant à d’autres personnes de tester ce que vous avez créé).

Lors de la création de projets Apps Script, vous pouvez modifier et améliorer votre code de nombreuses façons, peut-être à mesure que vous en apprenez davantage ou que vous essayez différentes choses. Par exemple:

  • Placer des lignes de code particulières à l’intérieur ou à l’extérieur des boucles et des décisions afin qu’elles se produisent exactement lorsque cela est nécessaire.
  • Ajout de la vérification des erreurs ou des erreurs des utilisateurs afin que le système puisse continuer à fonctionner même en cas de problème.
  • Rendre un système plus flexible afin que les gens puissent modifier des éléments particuliers et cela fonctionne toujours.
  • Trouver un moyen plus rapide de faire quelque chose, accélérer l’exécution du script (et éviter potentiellement le « délai d’expiration » du script si vous avez un script très long, car Google fixe des limites sur la durée d’exécution du script ).

Vous pouvez utiliser le journal d’exécution pour voir combien de temps mettent les scripts à s’exécuter. Cela peut être utile si vous essayez différentes manières d’écrire du code pour voir laquelle est la plus efficace.

Envoi d’e-mails à l’aide d’Apps Script

Vous souhaiterez peut-être que votre code Apps Script envoie un e-mail, par exemple pour informer quelqu’un de quelque chose qui se passe, comme la création d’un document ou la correspondance d’une date dans une feuille de calcul. Lorsque vous ajoutez des autorisations de partage à un fichier Google Drive à l’aide d’Apps Script (comme nous le verrons dans la prochaine partie de cette section), l’utilisateur recevra automatiquement un e-mail par défaut, mais sinon, vous devrez toujours écrire du code Apps Script à chaque fois. vous souhaitez qu’un e-mail soit envoyé.

Il existe deux manières de gérer la messagerie dans Apps Script :

  • La GmailApp donne accès à certains aspects d’un compte de messagerie, tels que les étiquettes, les fils de discussion, etc.
  • La MailApp vous permet d’envoyer des e-mails et de trouver un quota quotidien restant.

Ces deux applications ont des fonctionnalités différentes, et MailApp est celle dont vous avez besoin pour envoyer un e-mail, c’est donc celle que nous allons examiner.

Utiliser MailApp pour envoyer un e-mail

Il n’y a que deux commandes intégrées à MailApp : sendEmail() et getRemainingDailyQuota() . Sans surprise, celui que nous devons utiliser pour envoyer des e-mails est sendEmail() .

Il existe une gamme de paramètres que vous pouvez mettre entre parenthèses de sendEmail() et vous pouvez tous les afficher sur la page de référence des développeurs Apps Script pour MailApp . Le plus utile est :

MailApp.sendEmail (destinataire, sujet, corps, options) ;

où:

  • destinataire est l’adresse e-mail à laquelle l’e-mail est envoyé, sous forme de chaîne (vous pouvez inclure plusieurs adresses e-mail en les séparant par des virgules)
  • subjet est la ligne d’objet de l’e-mail, sous forme de chaîne
  • corps est l’e-mail en texte brut, sous forme de chaîne (cela signifie qu’il n’a aucun formatage – bien que nous puissions ajouter des sauts de ligne, comme nous l’explorerons ci-dessous)
  • options sont des informations supplémentaires comme les adresses e-mail BCC ou CC, en cas de non-réponse ou s’il y a des pièces jointes, en tant qu’objet JavaScript (voir la page de référence des développeurs Apps Script pour MailApp pour plus d’informations sur ces options et comment formater eux).

En règle générale, au lieu d’écrire toutes ces choses entre parenthèses de sendEmail(), vous les stockerez dans des variables, puis mettrez les noms de variables entre parenthèses. Voici un exemple de cela :

var adresseEmail = 'test@email.com';
var sujet = 'Helpful email';
var corps = 'Voici un courriel utile.';
var options = {noReply:true; cc: 'another-test@email.com'};

MailApp.sendEmail(adresseEmail, sujet, corps, options);

Construire un corps d’e-mail avec plusieurs lignes

Lorsque vous utilisez MailApp, vous devez créer une chaîne de texte contenant l’intégralité de votre message électronique. Il est plus facile de diviser cela en sections en utilisant += pour ajouter plus de contenu à la variable body, il est donc plus facile à lire dans l’éditeur Apps Script. Si vous souhaitez des sauts de ligne dans votre courrier électronique (comme vous le faites probablement), vous devez alors utiliser \n , ce qui signifie « nouvelle ligne » et revient à appuyer sur Entrée sur le clavier (la barre oblique inverse \ est un « caractère d’échappement » pour indiquer aux applications Dans le script, la valeur suivante n’est pas du texte et le n signifie « nouvelle ligne »). Par exemple :

var emailBody = "Cher utilisateur \n\n" ;
mailBody =+ "Ceci est un email automatisé pour dire qu'un script a fait quelque chose de bien. \n\n";
mailBody =+ "Tous mes vœux de réussite à la personne qui a écrit ce script"

Une introduction aux dates et heures dans Apps Script

Vous avez peut-être remarqué que tout au long de ce cours, nous n’avons pas traité des événements de Google Agenda ou de tout autre élément fonctionnant avec les dates. Ce n’est pas parce que nous les avons oubliés, c’est parce que travailler avec des dates et des heures dans Apps Script peut être assez délicat, il peut donc être utile de comprendre les bases avant de vous lancer. commencez à travailler avec les dates et les heures. Nous examinerons ici une introduction à l’utilisation des dates et des heures (et des événements du calendrier), mais vous constaterez probablement que vous aurez besoin d’en savoir plus sur les dates JavaScript en ligne si vous allez plus loin avec les options de date.

Si vous ne cherchez pas à faire quoi que ce soit en utilisant les dates ou Google Agenda pour le moment, n’hésitez pas à ignorer cette case pour le moment et à y revenir lorsque vous êtes prêt – les dates et les heures sont vraiment la prochaine étape dans Apps Script.

Lorsque nous travaillerons avec des dates et des heures, nous utiliserons des objets de date JavaScript . Il s’agit d’un type de données en JavaScript qui peuvent stocker des dates et des heures, et comme il s’agit d’une fonctionnalité de JavaScript plutôt que d’Apps Script en particulier, vous pouvez trouver de nombreux conseils utiles en ligne sur leur fonctionnement. Nous examinerons les bases, mais vous souhaiterez peut-être également consulter les conseils de w3schools sur les dates JavaScript, en commençant par les objets Date :

Création d’un nouvel objet date

Pour créer une nouvelle date dans Apps Script (et JavaScript), vous pouvez utiliser la commande new Date() , soit sans rien entre parenthèses (ce qui crée un objet date contenant la date et l’heure actuelles), soit avec d’autres informations dans le crochets pour créer une date spécifique, comme une chaîne de date (texte formaté comme une date) ou une liste spécifique d’année, de mois, de jour, d’heures, de minutes, de secondes, etc.

var aujourdhui = new Date();

Une date dans Apps Script a un format par défaut spécifique, qui pour le 08/01/2024 ressemblerait à Lun 08 Jan 11:30:34 GMT+00:00 2024 . Si vous exécutiez le code ci-dessus puis enregistriez cette valeur, elle serait dans ce format. Nous verrons bientôt comment vous pouvez modifier le format pour des sorties plus conviviales.

Vous constaterez peut-être que la date et/ou l’heure que vous recevez sont incorrectes, car votre projet Apps Script est défini sur un fuseau horaire incorrect. Pour changer cela, cliquez sur l’engrenage sur le côté gauche de la page pour accéder aux paramètres du projet , puis ajustez le fuseau horaire selon vos besoins.

Pour créer un objet date à partir d’une date spécifique qui n’est pas la date actuelle, vous pouvez fournir des informations entre parenthèses de la nouvelle commande Date() . Par exemple, vous pouvez indiquer des dates existantes que vous pourriez avoir ailleurs, comme dans une feuille de calcul de données ou collectées à partir d’un formulaire. Ceux-ci sont au format chaîne et doivent donc être placés entre guillemets. Il existe des formats de saisie de date spécifiques que vous pouvez utiliser dans Apps Script/JavaScript et qu’il pourra « lire » et transformer en un objet date. Cette page w3schools liée contient des conseils détaillés sur les différents formats d’entrée que vous pouvez utiliser.

var oneDate = new Date("2024-01-02");
var anotherDate = new Date("04/03/2023");
var dateAndTime = new Date("January 11, 2024 10:30:00");

Quel que soit le format d’une chaîne de date, lorsque vous la transformez en objet Date à l’aide de new Date() , elle aura le format de sortie ci-dessus (lundi 8 janvier 11:30:34 GMT+00:00 2024), sauf si vous le définissez autrement.

Formatage des objets date

Comme nous l’avons vu, lorsque vous créez un objet date, le format par défaut n’est pas particulièrement convivial, comme Mon Jan 08 11:30:34 GMT+00:00 2024 . Si vous souhaitez réécrire cette date dans un document, un courrier électronique ou une feuille de calcul, par exemple, vous souhaiterez peut-être qu’elle soit dans un format plus convivial, quelque chose que les gens pourraient s’attendre à voir et à lire comme une date (par exemple 08/08). 24/01).

Pour ce faire, nous pouvons utiliser le service Apps Script Utilities , avec la commande Utilities.formatDate() . La syntaxe complète pourrait être :

Utilities.formatDate(nouvelle date(suppliedDate), timeZone, format);

Où:

  • new Date(suppliedDate) est le nouvel objet date que vous créez, en lui donnant une chaîne de date à transformer en objet date (ou les crochets peuvent être vides, pour en créer un pour la date et l’heure actuelles, par exemple si vous enregistrez l’envoi d’un e-mail envoyé);
  • timeZone est le fuseau horaire du script en question, qui peut être obtenu à l’aide du service Session et stocké dans une variable, comme var timeZone = Session.getScriptTimeZone();
  • format est le format de date souhaité sous forme de chaîne de texte (donc entre guillemets), en utilisant d, M, y pour les éléments de date et h, m, s pour l’heure, par exemple « jj/MM/aaaa ».

En faisant cela, vous pouvez créer le format de date dont vous avez besoin lorsque vous avez un objet date. Ceci est particulièrement utile lors de l’enregistrement de la date/heure à laquelle quelque chose s’est produit, car vous pouvez créer un objet date de la date et de l’heure actuelles, puis le formater de manière plus lisible pour tous les utilisateurs du système.

Si vous travaillez sur un projet Apps Script qui fonctionne beaucoup avec les dates et les heures, vous pouvez également créer une petite fonction capable de convertir une date dans un format spécifié. Voici un exemple que vous pourriez utiliser :

function formatDate(suppliedDate, format){

//find script timezone
var timeZone = Session.getScriptTimeZone();

//generate formatted date
var formattedDate = Utilities.formatDate(new Date(suppliedDate), timezone, format);

//return formatted date to function that called this one
return formattedDate

}

Et vous pourriez appeler cette fonction dans d’autres fonctions, par exemple (avec date étant une variable contenant une date) :

var formattedDate = formatDate(date, 'dd/MM/yyyy');

Obtenir et définir des dates et des heures

Une fois que vous disposez d’un objet date, vous pouvez obtenir et définir des parties de l’objet date, par exemple les heures, les minutes, les secondes, l’année. Les commandes pour ce faire sont assez explicites en termes de dénomination : getHours() , getMinutes() , getSeconds , getFullYear , etc., et setHours() , setMinutes() , et ainsi de suite…

Ces commandes vous permettent de modifier les dates et les heures de différentes manières. Vous pouvez supprimer la partie heure d’une date (en la définissant sur 0) pour pouvoir comparer deux dates, car les objets date contiennent des heures ainsi que des dates, donc les heures doivent correspondre si vous souhaitez utiliser des opérateurs de comparaison comme ==.

Une autre utilisation cruciale de ces commandes consiste à combiner des dates et des heures créées séparément. Par exemple, si vous disposiez d’un formulaire Google et que vous collectiez des informations sur un événement, vous pourriez avoir une variable eventDate , une variable startTime et une variable endTime , à partir de différents champs du formulaire. Si vous souhaitez créer un événement Google Agenda à partir de ces données, vous avez besoin de deux valeurs, une « Date-Heure de début » et une « Date-Heure de fin », des objets Date JavaScript qui contiennent une heure et une date. Nous pourrions utiliser l’extrait de code suivant pour ce faire :

// create a new Date-Time object for the event start
var startDateTime = newDate(eventDate);
var startTimeHours = startTime.getHours();
var startTimeMinutes = startTime.getMinutes();
startDateTime.setHours(startTimeHours);
startDateTime.setMinutes(startTimeMinutes);

// create a new Date-Time object for the event end
var endDateTime = new Date(eventDate);
var endTimeHours = endTime.getHours();
var endTimeMinutes = endTime.getMinutes();
endDateTime.setHours(endTimeHours);
endDateTime.setMinutes(endTimeMinutes);

Désormais, nous pourrions utiliser les deux variables startDateTime et endDateTime lors de la création d’un événement de calendrier.

Création d’événements Google Agenda

Nous disposons désormais de suffisamment de pièces du puzzle pour pouvoir créer un événement Google Agenda à l’aide d’Apps Script. CalendarApp vous permet de travailler avec Google Calendar, et le processus est similaire à celui utilisé avec d’autres applications : vous devez obtenir le calendrier dans lequel vous souhaitez créer l’ événement en utilisant son ID, puis utiliser la commande createEvent() sur ce calendrier, en fournissant les informations pertinentes.

Vous pouvez trouver l’ID d’un calendrier Google en accédant aux paramètres du calendrier , puis en sélectionnant le calendrier en question dans la liste de gauche et en faisant défiler jusqu’à la section Intégrer le calendrier pour trouver l’ID du calendrier . Pour l’agenda principal connecté à un compte Google, il s’agira de l’adresse email de l’utilisateur concerné. Tout comme pour un fichier ou un dossier, stockez cet ID dans une variable de votre code Apps Script, à utiliser avec la commande CalendarApp.getCalendarById() .

// store calendar ID in a variable
var calendarID = 'test@gmail.com';

// get the calendar using its ID
var calendar = CalendarApp.getCalendarById(calendarId);

Une fois que vous avez stocké le calendrier dans une variable, vous pouvez faire diverses choses avec ce calendrier , notamment utiliser .createEvent() pour créer un événement de calendrier. createEvent() a besoin d’un titre d’événement, d’une date-heure de début et d’une date-heure de fin (voir l’en-tête précédent dans cette boîte pour savoir comment les obtenir), ainsi que d’éventuelles options supplémentaires stockées en tant qu’objet JavaScript de la même manière que pour l’utilisation de sendEmail(). Les options peuvent inclure une description, un emplacement, des invités et si des e-mails d’invitation sont envoyés à des invités. Vous pouvez en savoir plus à ce sujet dans la section du site de référence des développeurs Apps Script pour createEvent() .

Vous pouvez créer un événement de calendrier sans rien stocker en tant que variable, ou vous pouvez obtenir l’ID de l’événement, de la même manière que pour obtenir l’ID d’une copie de document, afin de pouvoir l’écrire dans une feuille de calcul ou le stocker au cas où l’événement doit être consulté ou supprimé.

//create calendar event without variable
calendar.createEvent('My Event Title', startDateTime, endDateTime);

//create calendar event and store ID in a variable (and having event title as a separate variable)
var eventID = calendar.createEvent(eventTitle, startDateTime, endDateTime).getId();

//create calendar event with additional options
var eventDescription = "This will be a great event."
var location = "The big room";
var guests = "guest1@test.com,guest2@test.com";
var options = {'description':eventDescription,'location':location;'guests':guests,'sendInvites':true};
var eventID = calendar.createEvent(eventTitle, startDateTime, endDateTime, options).getId();

Vous constaterez peut-être que parfois vous ne parvenez pas à réussir votre événement du premier coup, c’est pourquoi il peut être utile d’avoir l’identifiant que vous pourrez ensuite utiliser pour supprimer l’événement si vous ne parvenez pas à le trouver manuellement dans Google Agenda. La première date en JavaScript est le 1er janvier 1970 (car toutes les dates sont stockées sous forme de nombre de millisecondes après cette date), donc parfois des événements de calendrier mal configurés se retrouveront à ce moment-là !

Où aller ensuite avec Apps Script ?

Si vous avez parcouru ce guide, vous êtes arrivé à la fin du cours – félicitations ! Mais où pourriez-vous aller ensuite ?

Si vous n’avez pas encore commencé à y réfléchir, l’étape suivante consiste à réfléchir aux projets que vous aimeriez créer vous-même à l’aide d’Apps Script et à commencer à planifier ce qu’ils feraient et comment ils pourraient fonctionner. Utilisez les exemples de projets de ce cours pour vous aider à prendre en compte tous les éléments dont vous pourriez avoir besoin dans votre code et n’oubliez pas que chaque projet Apps Script est différent et que vous pouvez donc avoir des exigences différentes. Vous pouvez toujours revenir sur ce site pour vous rappeler tout ce dont vous avez besoin !

Si vous recherchez de l’inspiration pour des projets ou des exemples de ce que vous pouvez faire d’autre avec Apps Script, alors mon blog partage un gamme d’exemples de code Apps Script.

Au fur et à mesure que vous avancez avec Apps Script, n’oubliez pas que le guide de référence Apps Script Developers de Google est très utile pour savoir ce que vous pouvez faire et comment fonctionnent les commandes.

Vous souhaiterez peut-être également aller plus loin avec JavaScript, qui vous aidera avec certaines fonctionnalités d’Apps Script et vous permettra également de vous lancer dans d’autres codages Web.

Et si vous avez des retours/commentaires sur ce guide, contactez-moi via contact@atelier-informatique.com.