当应用某些标签时,我正在使用以下两个脚本来回复或转发电子邮件。我有两张表(replySheet 和 forwardSheet),在第一列中包含标签名称。replySheet 然后在下一个单元格中包含电子邮件回复文本,而 forwardSheet 具有将邮件转发到的电子邮件地址。
两个问题:
- 我收到了有关 GmailApp.getUserLabelByName 的错误消息“一天内调用了太多次服务”。我知道 Google Apps for Education 的限制是每天 10,000 次,但是这段代码应该每五分钟运行一次,或者每个标签每天运行 288 次。我有什么误解?重写代码以避免这种情况有什么想法吗?
- .moveToArchive() 在replyLabel() 中似乎没有做任何事情。我尝试将它移动到代码中的不同点(发送回复之前和之后),但它不会归档线程。
感谢您对任一问题的任何建议。如果我能让我的问题更清楚,请告诉我。
var thisSS = SpreadsheetApp.getActiveSpreadsheet();
var forwardSheet = thisSS.getSheetByName('Forwards');
var emailSheet = thisSS.getSheetByName('Email');
var alias = emailSheet.getRange(3, 2).getValue();
var replyTo = emailSheet.getRange(2, 2).getValue();
var fromName = emailSheet.getRange(1, 2).getValue();
var replySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Replies');
function forwardLabel() {
var data = forwardSheet.getRange(2, 1, forwardSheet.getLastRow(), 2).getValues();
for (i in data) {
var row = data[i];
var name = row[0].toString();
var email = row[1].toString();
if (name && (email != "")) {
var label = GmailApp.getUserLabelByName(name);
var threads = label.getThreads(0, 100);
for (i in threads) {
var messages = threads[i].getMessages();
for (j in messages) {
Logger.log(messages[j].getSubject());
messages[j].forward(email, {bcc:alias, from:alias, name:fromName}).markRead();
label.removeFromThread(threads[i]);
}
Utilities.sleep(1000);
}
}
}
}
function replyLabel() {
var data = replySheet.getRange(2, 1, replySheet.getLastRow(), 2).getValues();
var signature = emailSheet.getRange(4, 2).getValue().toString();
var alias = emailSheet.getRange(3, 2).getValue();
for (i in data) {
var labelName = data[i][0].toString();
var label = GmailApp.getUserLabelByName(labelName);
var replyText = data[i][1].toString();
replyText = replyText + signature;
if (label && (replyText !== "")) {
var labeledEmails = label.getThreads(0, 100);
for (j in labeledEmails) {
labeledEmails[j].moveToArchive();
label.removeFromThread(labeledEmails[j]);
var messages = labeledEmails[j].getMessages();
var message = messages[0];
message.reply(replyText,{htmlBody:replyText, bcc:alias, from:alias, name:fromName});
Utilities.sleep(2000);
}
}
}
}