Можно ли отправлять автоответчик Gmail в определенное время каждую неделю?

9

У меня есть аккаунт Gmail, который отслеживается только с понедельника по четверг. Я хотел бы настроить что-нибудь, чтобы автоматически отправлять постоянный ответ на электронные письма, полученные между днем ​​в четверг и утром в понедельник, информируя отправителя о том, что электронное письмо не будет видно до утра понедельника, и предоставляя экстренную контактную информацию.

Я не думаю, что это можно сделать прямо сейчас в Gmail. (Отпускные ответы необходимо включать и выключать вручную, а фильтры для консервированной электронной почты не включают никаких параметров даты / времени.) Можно ли настроить ответы Gmail «не на работе» для каждой повторяющейся недели? также предполагает, что это было возможно в Gmail, по крайней мере, во время этого вопроса.

Есть ли обходной путь или способ сделать несколько простых кодов для достижения этой цели? У меня есть опыт разработки программного обеспечения, но я не знаю, какие (если есть) варианты доступны широкой публике для расширения Gmail.

PurpleVermont
источник
Посмотрите на Бумеранг. Проще в использовании.
Алекс
Судя по описанию, похоже, он не выполняет то, о чем я спрашивал
PurpleVermont,

Ответы:

8

Вот скрипт приложения, который делает это. Вы можете щелкнуть эту ссылку запуска сценариев, чтобы открыть редактор сценариев на Google Диске. Затем:

  1. Замените заполнитель в редакторе сценарием, приведенным ниже.
  2. Перейдите в раздел «Ресурсы> Триггеры этого проекта» и установите триггер для автоматического повторения каждые 5 минут.

Логика сценария объясняется ниже.

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

Сценарий делает что-то, только если текущий местный день / время

  • Пятница, суббота, воскресенье (дни 5,6,0 в части [5,6,0].indexOf(day)) или
  • Понедельник до 8 утра (день 1, час <8)
  • Четверг после 17:00 (день 4, час> = 17)

Он проверяет все сообщения, полученные за последние 5 минут ( interval в сценарии), и отвечает на каждое из них стандартным текстом.

Важно, чтобы совпадали два временных интервала: интервал, с которым установлен триггер, и интервал, установленный в сценарии. В противном случае скрипт не сможет ответить на некоторые сообщения или ответит несколько раз.

замечания

Вы можете попытаться запустить это каждую минуту, а не каждые 5 минут; но я не был уверен, превысит ли это максимально допустимое время выполнения сценариев в течение дня (общее время выполнения 1 часа).

Я рассмотрел более сложные формы этого: с добавлением метки «автоответ» или с сохранением времени последнего запуска в ScriptProperties . Но вышесказанное выполняет свою работу и выигрывает в простоте.


источник
Я собирался предложить что-то вроде ifttt.com, но это намного лучше!
Баррикартер
Спасибо за этот ответ. У меня не было возможности поиграть с ним, но, если он попробует, я приму ответ.
PurpleVermont
обратите внимание, что пункт меню «Триггеры» переместился в меню «Правка»
userSteve
4

Сценарий в ответе user79865 действительно хорош! Однако я заметил, что когда я отправлял тестовое сообщение в нерабочее время, я отвечал сам себе каждые 5 минут, пока он снова не стал моим рабочим временем. Чтобы обойти это, я немного отредактировал скрипт, добавив оператор if в цикл for, отправляя ответы:

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

Ответчик теперь помечает поток как прочитанный после отправки ответа и должен игнорировать все непрочитанные потоки. Чтобы отследить, какие электронные письма были отправлены, когда я нахожусь вне офиса, респондент также помечает ветку как важную, так что я все еще знаю, чтобы отправить реальный ответ!

Darcey
источник