Alguma maneira de enviar a resposta automática do Gmail em determinados horários toda semana?

9

Eu tenho uma conta do Gmail que é monitorada apenas de segunda a quinta-feira. Gostaria de configurar algo para enviar automaticamente uma resposta em lata aos emails recebidos entre quinta-feira à tarde e segunda-feira de manhã, informando ao remetente que o email não será visto até segunda-feira de manhã e fornecendo informações de contato de emergência.

Não acho que isso possa ser feito diretamente no Gmail no momento. (As respostas de férias precisam ser ativadas e desativadas manualmente, e os filtros para e-mail fixo não incluem nenhuma opção de data / hora.) Posso definir as respostas "fora do escritório" do Gmail para todas as semanas recorrentes? também sugere que isso foi possível no Gmail, pelo menos no momento dessa pergunta.

Existe alguma solução alternativa ou maneira de fazer alguma codificação simples para fazer isso? Tenho experiência em desenvolvimento de software, mas não sei quais opções (se houver) estão disponíveis ao público em geral para estender o Gmail.

PurpleVermont
fonte
Olhe para o Boomerang. Mais fácil de usar.
Alex
Por sua descrição, ele realmente não parece fazer o que eu perguntei sobre
PurpleVermont

Respostas:

8

Aqui está um script de aplicativos que faz isso. Você pode clicar neste link para iniciar o script para abrir o editor de scripts no Google Drive. Então:

  1. Substitua o espaço reservado no editor pelo script fornecido abaixo.
  2. Vá para "Recursos> Gatilhos deste projeto" e defina um gatilho para executar a resposta automática a cada 5 minutos.

A lógica do script é explicada abaixo.

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

O script só faz alguma coisa se o dia / hora local atual for

  • Sexta-feira, sábado, domingo (dias 5,6,0 na parte [5,6,0].indexOf(day)) ou
  • Segunda-feira antes das 8h (dia 1, hora <8)
  • Quinta-feira após as 17:00 (dia 4, hora> = 17)

O que ele faz é verificar todas as mensagens recebidas nos últimos 5 minutos ( interval no script) e responder a cada uma com um texto fixo.

É importante que os dois intervalos de tempo correspondam: o intervalo no qual o gatilho está definido e o definido no script. Caso contrário, o script falhará em responder a algumas mensagens ou responderá várias vezes.

Observações

Você pode tentar executar isso a cada minuto, em vez de a cada 5 minutos; mas não tinha certeza se isso excederia o tempo máximo de execução permitido para scripts por um dia (tempo total de 1 hora).

Eu considerei formas mais sofisticadas disso: adicionando um rótulo "resposta automática" ou armazenando o horário da última execução em ScriptProperties . Mas o que foi dito acima faz o trabalho e vence na simplicidade.


fonte
Eu ia sugerir algo como ifttt.com, mas isso é muito melhor!
22416 barrycarter
Obrigado por esta resposta. Não tive chance de brincar com ele, mas, assumindo que funciona quando o tento, aceito a resposta.
PurpleVermont 23/02
nota que item de menu os gatilhos mudou-se para o menu Editar
userSteve
4

O script na resposta do usuário79865 é realmente ótimo! No entanto, notei que, quando enviava uma mensagem de teste fora do horário comercial, continuava respondendo a mim mesma a cada 5 minutos, até que se tornasse meu horário comercial novamente. Para contornar isso, editei um pouco o script, adicionando uma instrução if ao loop for, enviando as respostas:

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

O respondedor agora marcará um thread como lido quando enviar a resposta e deve ignorar todos os threads não lidos. Para acompanhar quais e-mails foram enviados enquanto eu estiver fora do escritório, o atendente também marca o tópico como importante, então ainda sei enviar uma resposta real!

Darcey
fonte