W jakikolwiek sposób wysyłać automatyczną odpowiedź Gmaila o określonych porach co tydzień?

9

Mam konto Gmail, które jest monitorowane tylko od poniedziałku do czwartku. Chciałbym skonfigurować coś, aby automatycznie wysyłać konserwowaną odpowiedź na wiadomości e-mail otrzymane między czwartkiem po południu a poniedziałkiem rano, informując nadawcę, że wiadomość e-mail będzie widoczna do poniedziałku rano, i podając dane kontaktowe w nagłych wypadkach.

Nie sądzę, że można to teraz zrobić bezpośrednio w Gmailu. (Odpowiedzi na wakacje muszą być ręcznie włączane i wyłączane, a filtry dla e-maili w puszkach nie zawierają żadnych opcji daty / godziny). Czy mogę ustawić Gmaila „poza biurem” na każdy kolejny cykl? sugeruje również, że było to możliwe w Gmailu, przynajmniej w czasie tego pytania.

Czy istnieje jakiś sposób obejścia lub sposobu na wykonanie prostego kodowania, aby to osiągnąć? Mam doświadczenie w tworzeniu oprogramowania, ale nie wiem, jakie (jeśli jakieś) opcje są dostępne dla ogółu społeczeństwa, aby rozszerzyć Gmaila.

PurpleVermont
źródło
Spójrz na Bumerang. Łatwiejszy w użyciu.
Alex
Według opisu, nie wydaje się, aby
robiło

Odpowiedzi:

8

Oto skrypt aplikacji, który to robi. Możesz kliknąć ten link rozpoczęcia skryptów, aby otworzyć edytor skryptów na Dysku Google. Następnie:

  1. Zastąp symbol zastępczy w edytorze skryptem podanym poniżej.
  2. Przejdź do „Zasoby> Wyzwalacze tego projektu” i ustaw wyzwalacz, aby uruchamiał się automatycznie co 5 minut.

Logikę skryptu wyjaśniono poniżej.

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

Skrypt robi coś tylko wtedy, gdy jest bieżący lokalny dzień / godzina

  • Piątek, sobota, niedziela (dni 5,6,0 w części [5,6,0].indexOf(day)) lub
  • Poniedziałek przed 8 rano (dzień 1, godzina <8)
  • Czwartek po 17:00 (dzień 4, godzina> = 17)

Sprawdza wszystkie wiadomości otrzymane w ciągu ostatnich 5 minut ( interval w skrypcie) i odpowiada na każdy z tekstem w puszce.

Ważne jest, aby dwa przedziały czasowe były zgodne: przedział, w którym wyzwalacz jest ustawiony, i ten ustawiony w skrypcie. W przeciwnym razie skrypt nie odpowie na niektóre wiadomości lub odpowie kilka razy.

Uwagi

Możesz spróbować uruchomić to co minutę zamiast co 5 minut; ale nie byłem pewien, czy przekroczyłoby to maksymalny czas działania skryptów na jeden dzień (całkowity czas działania 1 godziny).

Rozważyłem bardziej wyrafinowane formy: dodanie etykiety „automatyczna odpowiedź” lub zapisanie czasu ostatniego uruchomienia w ScriptProperties . Ale powyższe wykonuje zadanie i wygrywa w prostocie.


źródło
Chciałem zasugerować coś takiego jak ifttt.com, ale jest o wiele lepiej!
barrycarter
Dziękuję za tę odpowiedź. Nie miałem okazji się z tym bawić, ale zakładając, że zadziała, kiedy spróbuję, zaakceptuję odpowiedź.
PurpleVermont
Zwróć uwagę, że pozycja menu Wyzwalacze została przeniesiona do menu Edycja
userSteve
4

Skrypt w odpowiedzi user79865 jest naprawdę świetny! Zauważyłem jednak, że kiedy wysłałem wiadomość testową poza godzinami pracy biura, odpowiadałem sobie co 5 minut, aż znów stała się ona godzinami pracy biura. Aby obejść ten problem, zmodyfikowałem nieco skrypt, dodając instrukcję if do pętli for wysyłającej odpowiedzi:

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

Respondent oznaczy teraz wątek jako przeczytany po wysłaniu odpowiedzi i powinien zignorować wszystkie nieprzeczytane wątki. Aby śledzić, które e-maile zostały wysłane, gdy jestem poza biurem, odpowiadający zaznacza również wątek jako ważny, więc nadal wiem, że mogę wysłać prawdziwą odpowiedź!

Darcey
źródło