可以通过多种方式做到这一点。在电话领域,这种行为称为Hunt Group。这是一个借用该概念来帮助您入门的建议。
假设:
- 您正在使用 Gmail。
- 该脚本将与 Gmail 帐户属于同一帐户持有人。
方法:
您将在 Gmail 中设置一个过滤器来识别符合您条件的传入邮件 - “大象”电子邮件。
在此过滤器中,您将对新电子邮件应用标签 - “大象” - 脚本将使用该标签来识别“待办事项”。
电子表格将用于包含一个脚本,该脚本将扫描与“大象”标签相关的未读消息并转发它们。
该脚本将设置为以适合您的时间间隔触发计时器事件。
电子表格将包含(格式正确的)目标电子邮件地址列表;乔、艾米、塔米。脚本将读取这些并按顺序使用它们。
处理完一封电子邮件后,它将被标记为“已读”。您可以选择取消标记、重新标记、归档或丢弃它们。
剧本
此脚本使用 ScriptProperties 跟踪哪个收件人将获得下一条转发的消息。如果您希望收到大量消息,则需要对其进行增强以支持批量获取消息。
记得labelName
适当改变。
该脚本会进行一些错误检查,但不会验证电子邮件地址 - 消息可能因此而导致转发操作失败。买者自负。
这也可以作为 gist 获得。
/**
* Retrieves a given user label by name and forwards unread messages
* associated with that that label to a member of the Hunt Group.
*/
function huntGroupForward() {
// get the label for given name
var labelName = "elephant"
var label = GmailApp.getUserLabelByName(labelName);
if (label == null) throw new Error("No messages for label "+labelName);
// get count of all threads in the given label
var threadCount = label.getUnreadCount();
if (threadCount == 0) return; // quick exit if nothing to do.
var threads = label.getThreads();
var messages = [];
for (var i in threads) {
if (threads[i].isUnread()) {
messages = messages.concat( threads[i].getMessages() );
}
}
for (var i = 0; i < messages.length; i++) {
if (messages[i].isUnread()) {
messages[i].forward(nextHuntGroupMember());
messages[i].markRead();
}
}
};
/*
* Global object to store working copy of the Hunt Group
*/
var huntGroup = { next : 0, members : [] };
/*
* Get the email address of the next Hunt Group Member
* to forward a message to.
*/
function nextHuntGroupMember() {
if (huntGroup.members.length == 0) {
// Load members
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 0; i < data.length; i++) {
huntGroup.members.push(data[i][0])
}
// Make sure we have members
if (huntGroup.members.length == 0) {
throw new Error("Found no email addresses");
}
}
// Retrieve next index. Properties are always stored as strings, so
// we need to parse the retrieved value to use it as a Number.
var next = parseInt(ScriptProperties.getProperty("nextHuntGroupMember"));
if (next != null) {
huntGroup.next = next;
}
else {
next = 0;
}
// get next member to be used
var nextMember = huntGroup.members[next];
// ... then move on to new next (increment modulo list length)
next = ++next % huntGroup.members.length;
// store the new next value
ScriptProperties.setProperty("nextHuntGroupMember", next);
return nextMember;
}
扳机
一旦您对脚本感到满意,请将其设置为定期运行。这是您将其设置为每小时运行的方式: