Un modo per inviare la risposta automatica di Gmail in determinati orari ogni settimana?


9

Ho un account Gmail che viene monitorato solo dal lunedì al giovedì. Vorrei impostare qualcosa per inviare automaticamente una risposta predefinita per le e-mail ricevute tra giovedì pomeriggio e lunedì mattina per informare il mittente che l'e-mail non verrà visualizzata fino a lunedì mattina e fornire informazioni di contatto di emergenza.

Non penso che questo possa essere fatto direttamente in Gmail in questo momento. (Le risposte alle vacanze devono essere attivate e disattivate manualmente e i filtri per le email predefinite non includono alcuna opzione di data / ora.) Posso impostare le risposte "fuori sede" di Gmail per ogni settimana ricorrente? suggerisce anche che ciò è stato possibile in Gmail, almeno al momento della domanda.

Esiste un modo per aggirare o un modo per fare qualche semplice codifica per raggiungere questo obiettivo? Ho un background di sviluppo software, ma non sono a conoscenza di quali (se presenti) opzioni sono disponibili al pubblico per estendere Gmail.



Guarda Boomerang. Più facile da usare
Alex,

Secondo la sua descrizione, non sembra proprio fare ciò di cui ho chiesto
PurpleVermont,

Risposte:


8

Ecco uno script di app che fa questo. Puoi fare clic su questo link di avvio script per aprire l'editor di script in Google Drive. Poi:

  1. Sostituisci il segnaposto nell'editor con lo script indicato di seguito.
  2. Vai su "Risorse> Trigger di questo progetto" e imposta un trigger per eseguire la risposta automatica ogni 5 minuti.

La logica dello script è spiegata di seguito.

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.");
    }
  }
}

Lo script fa qualcosa solo se il giorno / l'ora locale attuale è

  • Venerdì, sabato, domenica (giorni 5,6,0 nella parte [5,6,0].indexOf(day)), oppure
  • Lunedì prima delle 8:00 (giorno 1, ora <8)
  • Giovedì dopo le 17:00 (giorno 4, ora> = 17)

Ciò che fa è controllare tutti i messaggi ricevuti negli ultimi 5 minuti ( interval nello script) e rispondere a ciascuno con un testo fisso.

È importante che i due intervalli di tempo corrispondano: l'intervallo in cui è impostato il trigger e quello impostato nello script. In caso contrario, lo script non risponderà ad alcuni messaggi o risponderà più volte.

Osservazioni

Puoi provare a eseguirlo ogni minuto anziché ogni 5 minuti; ma non ero sicuro che questo avrebbe superato il tempo di esecuzione massimo consentito agli script per un giorno (tempo di esecuzione totale di 1 ora).

Ho considerato forme più sofisticate di questo: con l'aggiunta di un'etichetta "risposta automatica" o con la memorizzazione del tempo dell'ultima esecuzione in ScriptProperties . Ma quanto sopra ottiene il lavoro fatto e vince in semplicità.


Stavo per suggerire qualcosa come ifttt.com ma questo è molto meglio!
Barrycarter,

Grazie per questa risposta Non ho avuto la possibilità di giocarci, ma supponendo che funzioni quando lo provo, allora accetterò la risposta.
PurpleVermont,

si noti che la voce di menu Trigger è stata spostata nel menu Modifica
userSteve

4

Lo script nella risposta di user79865 è davvero fantastico! Ho notato, tuttavia, che quando ho inviato un messaggio di prova al di fuori dei miei orari di ufficio, ho continuato a rispondere a me stesso ogni 5 minuti fino a quando non è tornato il mio orario di ufficio. Per ovviare a questo ho modificato leggermente lo script, aggiungendo un'istruzione if al ciclo for inviando le risposte:

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();
      }
    }
  }
}

Il rispondente ora contrassegnerà un thread come letto una volta che invia la risposta e dovrebbe ignorare tutti i thread non letti. Per tenere traccia di quali e-mail sono state inviate mentre sono fuori sede, il rispondente contrassegna anche il thread come importante, quindi so ancora di inviare una risposta reale!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.