Est-il possible d'envoyer une réponse automatique Gmail à certains moments de la semaine?

9

J'ai un compte Gmail qui n'est surveillé que du lundi au jeudi. Je voudrais configurer quelque chose pour envoyer automatiquement une réponse standardisée pour les e-mails reçus entre le jeudi après-midi et le lundi matin, informant l'expéditeur que l'e-mail ne sera pas vu avant le lundi matin et donnant des informations de contact d'urgence.

Je ne pense pas que cela puisse être fait directement dans Gmail pour le moment. (Les réponses relatives aux vacances doivent être activées et désactivées manuellement, et les filtres pour les e-mails en conserve n'incluent aucune option de date / heure.) Puis-je définir des réponses Gmail "Absent du bureau" pour chaque semaine récurrente? suggère également que cela était possible dans Gmail, au moins au moment de cette question.

Existe-t-il une solution de contournement ou un moyen de faire un codage simple pour y parvenir? J'ai une formation en développement logiciel, mais je ne sais pas quelles options (le cas échéant) sont disponibles pour le grand public pour étendre Gmail.

PurpleVermont
la source
Regardez Boomerang. Plus simple d'utilisation.
Alex
Par sa description, il ne semble pas vraiment faire ce que j'ai demandé
PurpleVermont

Réponses:

8

Voici un script d'applications qui fait cela. Vous pouvez cliquer sur ce lien de démarrage de script pour ouvrir l'éditeur de script dans Google Drive. Alors:

  1. Remplacez l'espace réservé dans l'éditeur par le script ci-dessous.
  2. Accédez à "Ressources> Déclencheurs de ce projet" et définissez un déclencheur pour qu'il s'exécute automatiquement toutes les 5 minutes.

La logique du script est expliquée ci-dessous.

function autoReply() {
  var interval = 5;    //  if the script runs every 5 minutes; change otherwise
  var date = new Date();
  var day = date.getDay();
  var hour = date.getHours();
  if ([5,6,0].indexOf(day) > -1 || (day == 1 && hour < 8) || (day == 4 && hour >= 17)) {
    var timeFrom = Math.floor(date.valueOf()/1000) - 60 * interval;
    var threads = GmailApp.search('is:inbox after:' + timeFrom);
    for (var i = 0; i < threads.length; i++) {
      threads[i].reply("I am out of office. Your email will not seen until Monday morning.");
    }
  }
}

Le script ne fait quelque chose que si l'heure / le jour local actuel est

  • Vendredi, samedi, dimanche (jours 5,6,0 dans la partie [5,6,0].indexOf(day)), ou
  • Lundi avant 8 h (jour 1, heure <8)
  • Jeudi après 17 h (jour 4, heure> = 17)

Il vérifie tous les messages reçus au cours des 5 dernières minutes ( interval dans le script) et répond à chacun avec un texte préenregistré.

Il est important que les deux intervalles de temps correspondent: l'intervalle auquel le déclencheur est défini et celui défini dans le script. Sinon, le script ne répondra pas à certains messages ou répondra plusieurs fois.

Remarques

Vous pouvez essayer de l'exécuter toutes les minutes au lieu de toutes les 5 minutes; mais je ne savais pas si cela dépasserait la durée maximale d'exécution autorisée pour les scripts pendant une journée (durée totale d'une heure).

J'en ai considéré des formes plus sophistiquées: avec l'ajout d'un libellé "réponse automatique", ou avec l'enregistrement de l'heure de la dernière exécution dans ScriptProperties . Mais ce qui précède fait le travail et gagne en simplicité.


la source
J'allais suggérer quelque chose comme ifttt.com mais c'est bien mieux!
barrycarter
Merci pour cette réponse. Je n'ai pas eu l'occasion de jouer avec, mais en supposant que cela fonctionne lorsque je l'essaye, j'accepterai alors la réponse.
PurpleVermont
notez que l'élément de menu Déclencheurs a été déplacé vers le menu Édition
userSteve
4

Le script dans la réponse de user79865 est vraiment génial! J'ai cependant remarqué que lorsque j'envoyais un message test en dehors de mes heures de bureau, je continuais à me répondre toutes les 5 minutes jusqu'à ce que ce soit à nouveau mes heures de bureau. Afin de contourner ce problème, j'ai légèrement modifié le script, en ajoutant une instruction if à la boucle for en envoyant les réponses:

function autoReply() {
var interval = 5;    //  if the script runs every 5 minutes; change otherwise
  var date = new Date();
  var day = date.getDay();
  var hour = date.getHours();
  if ([5,6,0].indexOf(day) > -1 || (day == 1 && hour < 8) || (day == 4 && hour >= 17)) {
    var timeFrom = Math.floor(date.valueOf()/1000) - 60 * interval;
    var threads = GmailApp.search('is:inbox after:' + timeFrom);
    for (var i = 0; i < threads.length; i++) {
      if (threads[i].isUnread()){
      threads[i].reply("I am out of office. Your email will not seen until Monday morning.");
      threads[i].markRead();
      threads[i].markImportant();
      }
    }
  }
}

Le répondeur va maintenant marquer un thread comme lu une fois qu'il a envoyé la réponse et doit ignorer tous les threads non lus. Afin de garder une trace des e-mails envoyés lorsque je ne suis pas au bureau, le répondeur marque également le fil comme important, donc je sais toujours envoyer une vraie réponse!

Darcey
la source