谷歌应用程序脚本在工作时间之间自动回复



我在编码方面的经验非常有限,所以我感谢大家的帮助。我使用代码生成器通过谷歌应用程序脚本为谷歌语音创建了一个下班后的自动文本回复。它通过电子邮件进行回复。代码工作得很好!但现在我需要在特定时间之间创建第二个自动回复。我使用的代码生成器没有这个功能。这段代码是显示时间触发器的一行。我需要新的触发器在12:30到18之间。有人能帮忙吗?TIA-

function autoreplyCheck() {
var autoreplyMessage = "Thank you for contacting me! I am currently unavailable. My business hours are Wednesday through Saturday from 8 am until 10 pm. I will return your message by the end of the next business day. If you are a new customer please fill out my new customer form here https://forms.gle/8yPbFAe2vSmXhG3i6";
var days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var d = new Date();
var hour = d.getHours();
var day = days[d.getDay()];
var minute = d.getMinutes();
var currentlyClosed = isClosed(day, hour, minute);
Logger.log("Currently closed: " +currentlyClosed);
if (currentlyClosed) {
var newestThreads = GmailApp.getInboxThreads(0,7);
for (var i = 0; i < newestThreads.length; i++) {
if (newestThreads[i].getFirstMessageSubject().search("New text message from") != -1){
var alreadyReplied = false;
var textedWhileClosed = false;
var justCameIn = false;
var messages = GmailApp.getMessagesForThread(newestThreads[i]);
if (messages[messages.length-1].getPlainBody().search(autoreplyMessage) != -1){
alreadyReplied = true;
}
if (d - messages[messages.length-1].getDate() <= 5 * 60 * 1000){
justCameIn = true;
}
var sentMinute = messages[messages.length-1].getDate().getMinutes();
var sentHour = messages[messages.length-1].getDate().getHours();
var sentDay  = messages[messages.length-1].getDate().getDay();
if (isClosed(days[sentDay], sentHour, sentMinute)){
textedWhileClosed = true;
}
if (!alreadyReplied && textedWhileClosed && justCameIn){
Logger.log("Sending message!");
messages[messages.length-1].reply(autoreplyMessage);
}
}
}
}
}
function isClosed(day, hour, minute){
if (day == 'Monday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
} else if (day == 'Tuesday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
} else if (day == 'Wednesday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
} else if (day == 'Thursday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
} else if (day == 'Friday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
} else if (day == 'Saturday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 20 || (hour == 20 && minute >= 0))){
return true;
} else if (day == 'Sunday' && (hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0))){
return true;
}
return false;
}

据我所知,您需要isClosed函数的额外时间范围来捕获12:30-18:00之间的消息。

要解决此问题,您可以添加以下内容:

if(day == 'Thursday' && (hour > 12 || hour === 12 && minute >= 30) && (hour < 18 || hour === 18 && minute <= 0)){
return true;
}

或者如果你想把它应用到所有的日子,

function isClosed(day, hour, minute){

var isInTimeRange = (hour > 12 || hour === 12 && minute >= 30) && (hour < 18 || hour === 18 && minute <= 0);
if (day == 'Monday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Tuesday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Wednesday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Thursday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Friday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Saturday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 20 || (hour == 20 && minute >= 0)) || isInTimeRange )){
return true;
} else if (day == 'Sunday' && (( hour < 8 || (hour == 8 && minute < 0) || hour >= 22 || (hour == 22 && minute >= 0)) || isInTimeRange )){
return true;
}
return false;
}

最新更新