受信トレイに戻される各メッセージから「フォローアップ」というラベルを削除したいと考えています。私はいくつかのことを試しましたが、まだ成功していません。誰かが私を助けてくれるか、正しい方向に向けてくれることを願っています。関連する機能は次のとおりです。
function moveToInbox(page) {
GmailApp.moveThreadsToInbox(page);
// GmailApp.markThreadsUnread(page);
// GmailApp.starMessages(page)
var label = GmailApp.getUserLabelByName("FollowUp");
var firstThread = GmailApp.getInboxThreads(0,1)[0];
var coupleOfMessages = firstThread.getMessages().slice(0, 10);
GmailApp.starMessages(coupleOfMessages);
label.removeFromThread(firstThread);
}
スクリプト全体は次のとおりです。
function getLabelName(i, labelSuffixString) {
return "FollowUp/" + i + labelSuffixString;
}
function setup() {
for (var i = 1; i <= 7; ++i) {
GmailApp.createLabel(getLabelName(i, "days"));
GmailApp.createLabel(getLabelName(i, "weeks"));
}
GmailApp.createLabel("FollowUp");
}
function moveToInbox(page) {
GmailApp.moveThreadsToInbox(page);
// GmailApp.markThreadsUnread(page);
// GmailApp.starMessages(page)
var label = GmailApp.getUserLabelByName("FollowUp");
var firstThread = GmailApp.getInboxThreads(0,1)[0];
var coupleOfMessages = firstThread.getMessages().slice(0, 10);
GmailApp.starMessages(coupleOfMessages);
label.removeFromThread(firstThread);
}
function cleanOldFollowUpLabels() {
var searchString = "-label:inbox label:FollowUp";
for (var i = 1; i <= 7; ++i) {
searchString += " -label:" + getLabelName(i, "days");
searchString += " -label:" + getLabelName(i, "weeks");
}
searchString = searchString.replace(RegExp("/", "g"), "-");
Logger.log("cleanOldFollowUpLabels() Search String:");
Logger.log(searchString);
var followUpLabel = GmailApp.getUserLabelByName("FollowUp");
var page = null;
// Get threads in "pages" of 100 at a time
while(!page || page.length == 100) {
page = GmailApp.search(searchString, 0, 100);
Logger.log("found: " + page.length);
if (page.length > 0)
followUpLabel.removeFromThreads(page);
}
}
function update(labelSuffixString) {
var oldLabel, newLabel, page;
var followUpLabel = GmailApp.getUserLabelByName("FollowUp");
for (var i = 1; i <= 7; ++i) {
newLabel = oldLabel;
oldLabel = GmailApp.getUserLabelByName(getLabelName(i, labelSuffixString));
page = null;
// Get threads in "pages" of 100 at a time
while(!page || page.length == 100) {
page = oldLabel.getThreads(0, 100);
if (page.length > 0) {
followUpLabel.addToThreads(page);
if (newLabel) {
// Move the threads into "today’s" label
newLabel.addToThreads(page);
} else {
moveToInbox(page);
}
// Move the threads out of "yesterday’s" label
oldLabel.removeFromThreads(page);
// Wait for a minute to prevent timeout errors
Utilities.sleep(1000);
}
}
}
}
function dailyUpdate() {
update("days");
}
function weeklyUpdate() {
update("weeks");
}