CRÉER / ENVOYER DES INVITATIONS (AGENDA)

Parmi plusieurs méthodes permettant d'envoyer ou de créer des invitations à partir d'une feuille (création de fichiers .ics, ou écriture directe dans les agendas partagés), nous allons explorer ici une méthode plus simple consistant à donner un lien hypertexte.



Par formule dans la feuille (laquelle peut être partagée)

  • pour une ou des journées complètes
    • en A : objet
    • en B : date de début
    • en C : date de fin
    • en D : le lieu
=HYPERLINK("https://calendar.google.com/calendar/render?action=TEMPLATE&text="&A1&"&dates="& TEXT(B1;"YYYYMMDD")&"/"&TEXT(C1+1;"YYYYMMDD")&"&details=&location="&D1;"Ajouter au calendrier")
  • pour un créneau horaire particulier
    • en A : objet
    • en B : date et heure de début
    • en C : date et heure de fin
    • en D : le lieu
    • en E : le fuseau horaire sous forme GMT+/-x

=HYPERLINK("https://calendar.google.com/calendar/render?action=TEMPLATE&text="&A1&"&dates="& TEXT(B1-VALUE(SUBSTITUTE(SUBSTITUTE(E1;"+";"");"GMT";""))/24;"YYYYMMDDTHHmmSS")&"Z/"& TEXT(C1-VALUE(SUBSTITUTE(SUBSTITUTE(E1;"+";"");"GMT";""))/24;"YYYYMMDDTHHmmSS")&"Z&details=&location="&D1;"Ajouter au calendrier")

Par courriel et script

Une solution simple serait d'envoyer le lien hypertexte créé par les formules ci-dessus.

Sans recopie de cette formule, il est nécessaire de vérifier la timezone dans l'éditeur de script. Pour cela, aller dans paramètres du projet (engrenage à gauche)


retour dans l'éditeur et lecture de appsscript.json, modifier si besoin et enregistrer



  • pour une ou des journées complètes
    • en A : objet
    • en B : date de début
    • en C : date de fin
    • en D : le lieu
function envoyerInvitationsAllDays() {
  var f = SpreadsheetApp.getActiveSheet()
  var sujet = f.getRange('A1').getValue()
  var debut = f.getRange('B1').getValue()
  var fin = f.getRange('C1').getValue()
  var lieu = f.getRange('D1').getValue()
  var d = Utilities.formatDate(new Date(debut), Session.getScriptTimeZone(), "yyyyMMdd");
  var f = (new Date(fin)).setDate((new Date(fin)).getDate() + 1)
  f = Utilities.formatDate(new Date(f), Session.getScriptTimeZone(), "yyyyMMdd");
  var lien = "https://calendar.google.com/calendar/render?action=TEMPLATE&text=" + sujet + 
    "&dates=" + d + "/" + f + "&details=&location=" + lieu
  var email = 'adresse_email@gmail.com'
  MailApp.sendEmail({
    toemail,
    subjectsujet,
    htmlBody'Merci de bien vouloir enregistrer l\'événement suivant : <a href="' + lien + '">' + sujet + '</a>'
  })

}
  • pour un créneau horaire particulier
    • en A : objet
    • en B : date et heure de début
    • en C : date et heure de fin
    • en D : le lieu
function envoyerInvitations() {
  var f = SpreadsheetApp.getActiveSheet()
  var sujet = f.getRange('A1').getValue()
  var debut = f.getRange('B1').getValue()
  var fin = f.getRange('C1').getValue()
  var lieu = f.getRange('D1').getValue()
  var d = Utilities.formatDate(new Date(debut), 'GMT'"yyyyMMdd'T'HHmmSS");
  var f = Utilities.formatDate(new Date(fin), 'GMT'"yyyyMMdd'T'HHmmSS");
  var lien = "https://calendar.google.com/calendar/render?action=TEMPLATE&text=" + sujet + 
    "&dates=" + d + "Z/" + f + "Z&details=&location=" + lieu
  var email = 'adresse_email@gmail.com'
  MailApp.sendEmail({
    toemail,
    subjectsujet,
    htmlBody'Merci de bien vouloir enregistrer l\'événement suivant : <a href="' + lien + '">' + sujet + '</a>'
  })
}

Commentaires

Posts les plus consultés de ce blog

INSÉRER UN TABLEAU PROVENANT D'UNE FEUILLE DANS UN COURRIEL

METTRE À DISPOSITION DES INFORMATIONS SANS ACCÈS AU FICHIER COMPLET

NAVIGUER AU SEIN D'UN FICHIER À L'AIDE D'UN MENU DÉROULANT