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({
to: email,
subject: sujet,
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({
to: email,
subject: sujet,
htmlBody: 'Merci de bien vouloir enregistrer l\'événement suivant : <a href="' + lien + '">' + sujet + '</a>'
})
}
Commentaires
Enregistrer un commentaire