2017-04-03 4 views
0

Versuch, ein App-Skript zu erhalten, um den Wochentag zu überprüfen, wenn eine Nachricht eingeht und automatisch mit einer Nachricht antwortet, wenn eine Nachricht an bestimmten Tagen, sagen Samstag und Sonntag. Ich suche, den Text in der Nachricht etwas zu formatieren, um Farbe für etwas Text, Wagenrücklauf, usw. einzuschließen. Ich habe den folgenden Code, der mit zwei Fehlern arbeitet. 1. Der Antworttext ist nicht formatiert. 2. Ich habe eine E-Mail-Schleife, wenn jemand eine Abwesenheitsnachricht aktiviert hat. Könnte dies behoben werden, indem eine Nachricht zu Nachrichtenthreads hinzugefügt wird, auf die die automatische Antwort antwortet?apps Skript reocurring Abwesenheitsnotiz

Vielen Dank für jede Hilfe im Voraus.

function autoReply() { 
    var interval = 5;   // if the script runs every 5 minutes; change otherwise 
    var daysOff = [6,0]; // 1=Mo, 2=Tu, 3=We, 4=Th, 5=Fr, 6=Sa, 0=Su 
    var message = "**Auto Reply** Thank you for your email! I am out of the office for the weekend spending time with my family. I will be back in the office Monday at 8:00 am. My usual office hours are Monday- Friday 8:00 am-4:00 pm EST. I monitor email periodically over weekends for emergencies. I look forward to assisting you. Thank you!"; 
    var date = new Date(); 
    var day = date.getDay(); 
    if (daysOff.indexOf(day) > -1) { 
    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(message); 
    } 
    } 
} 

Antwort

0

Zunächst einmal hat Ihre Nachricht keine Formatierung. Im Wesentlichen senden Sie eine Klartextantwort. Verwenden Sie HTML-Formatierung in der Zeichenfolge und verwenden Sie sie als htmlBody-Parameter (lesen Sie mehr dazu unter here).

Als nächstes folgt die Antwortschleife. Google hat ein eingebautes Abwesenheits-System und die Art und Weise, wie sie es tun, ist, dass jemand die automatische Antwort immer nur ein paar Tage bekommt. Ich würde empfehlen, etwas ähnliches zu tun. Sobald Ihr Skript ausgelöst wird, speichern Sie die E-Mail unter Verwendung von PropertiesService.getUserProperties() (lesen Sie mehr über sie here). Also im Grunde würden Sie

PropertiesService.getUserProperties().setProperty(email, date) 

tun, wo Sie email aus der empfangenen E-Mail-Nachricht greifen sollten und Sie haben bereits die date. Denken Sie daran, dass Sie alle beteiligten E-Mails abrufen und jeden mit der gleichen Nachricht informieren möchten. Sie müssen sie also durchlaufen, um einen separaten Eintrag für jede E-Mail zu erstellen.

So möchten Sie die E-Mail früh am beggining Ihrer Funktion zu erhalten und dann versuchen, PropertiesService.getUserProperties().getProperty(email) und wenn es Ihnen gelingt, eine nicht null oder undefined Eigenschaft abzurufen, sollten Sie mit einem return der Funktion beenden, weil Sie bereits gesendet ihnen eine Antwort und du musst nicht mehr.

Verwandte Themen