Adakah cara untuk mengirim respons otomatis Gmail pada waktu tertentu setiap minggu?

9

Saya memiliki akun Gmail yang hanya dimonitor pada hari Senin hingga Kamis. Saya ingin mengatur sesuatu agar secara otomatis mengirim balasan kalengan untuk email yang diterima antara Kamis sore dan Senin pagi memberi tahu pengirim bahwa email itu tidak akan terlihat sampai Senin pagi, dan memberikan informasi kontak darurat.

Saya tidak berpikir ini bisa dilakukan secara langsung di Gmail sekarang. (Balasan liburan harus dihidupkan dan dimatikan secara manual, dan filter untuk email kaleng tidak menyertakan opsi tanggal / waktu.) Dapatkah saya mengatur balasan Gmail "di luar kantor" untuk setiap minggu berulang? juga menyarankan bahwa ini dimungkinkan di Gmail, setidaknya pada saat pertanyaan itu.

Apakah ada penyelesaian atau cara untuk melakukan beberapa pengkodean sederhana untuk mencapai ini? Saya memiliki latar belakang pengembangan perangkat lunak, tetapi saya tidak mengetahui opsi apa (jika ada) yang tersedia untuk masyarakat umum untuk memperluas Gmail.

PurpleVermont
sumber
Lihatlah Boomerang. Lebih mudah digunakan.
Alex
Dengan uraiannya, sepertinya tidak benar-benar melakukan apa yang saya tanyakan
PurpleVermont

Jawaban:

8

Berikut adalah Skrip Aplikasi yang melakukan ini. Anda dapat mengklik tautan mulai skrip ini untuk membuka editor skrip di Google Drive. Kemudian:

  1. Ganti placeholder dalam editor dengan skrip yang diberikan di bawah ini.
  2. Buka "Sumber Daya> Pemicu proyek ini", dan atur pemicu untuk menjalankan autoreply setiap 5 menit.

Logika naskah dijelaskan di bawah ini.

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

Script hanya melakukan sesuatu jika hari / waktu setempat saat ini adalah

  • Jumat, Sabtu, Minggu (hari 5,6,0 pada bagian [5,6,0].indexOf(day)), atau
  • Senin sebelum jam 8 pagi (hari 1, jam <8)
  • Kamis setelah 17:00 (hari 4, jam> = 17)

Apa yang dilakukannya adalah memeriksa semua pesan yang diterima dalam 5 menit terakhir ( interval dalam skrip) dan membalas masing-masing dengan teks kalengan.

Penting bahwa dua interval waktu cocok: interval di mana pemicu diatur, dan satu set dalam skrip. Kalau tidak, skrip akan gagal membalas beberapa pesan, atau akan membalas beberapa kali.

Catatan

Anda dapat mencoba menjalankan ini setiap menit, bukan setiap 5 menit; tapi saya tidak yakin apakah ini akan melebihi waktu berjalan maksimal yang diizinkan untuk skrip selama sehari (total 1 jam waktu berjalan).

Saya menganggap bentuk yang lebih canggih dari ini: dengan menambahkan label "balas otomatis", atau dengan menyimpan waktu menjalankan terakhir di ScriptProperties . Tetapi hal di atas menyelesaikan pekerjaan, dan menang dalam kesederhanaan.


sumber
Saya akan menyarankan sesuatu seperti ifttt.com tapi ini jauh lebih baik!
barrycarter
Terima kasih atas jawaban ini. Saya belum memiliki kesempatan untuk bermain dengannya, tetapi dengan asumsi itu berhasil ketika saya mencobanya, saya akan menerima jawabannya.
PurpleVermont
perhatikan bahwa item menu Pemicu telah pindah ke menu Edit
userSteve
4

Script dalam jawaban user79865 benar-benar hebat! Namun, saya memperhatikan bahwa ketika saya mengirim pesan tes di luar jam kantor saya, saya terus membalas setiap 5 menit sampai itu menjadi jam kantor saya lagi. Untuk mengatasi itu saya sedikit mengedit skrip, menambahkan pernyataan if ke for for mengirimkan respons:

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

Responder sekarang akan menandai utas sebagai sudah dibaca setelah mengirim balasan, dan harus mengabaikan semua utas yang belum dibaca. Untuk melacak email mana yang dikirim saat saya di luar kantor, responden juga menandai utas sebagai penting, jadi saya masih tahu untuk mengirim balasan yang sebenarnya!

Darcey
sumber