我在 Google Sheets 中有一个电子邮件 ID 号列表,我想在我的 Gmail 帐户中删除它。我需要一个脚本,它会在运行时删除所有列出的电子邮件。在 HTML 模式下查看 Gmail 时,ID 号来自 URL。这是一个示例,180cd026***9177a 是我列表中的内容,我需要使用它来删除 Gmail 中的消息。到目前为止,我的代码仅在工作表中的 ID 列表与收件箱中消息的顺序匹配时才有效。无论邮件位于收件箱/列表中的哪个位置,我都需要一些工作。有人有建议吗?
function myFunction() {
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1CaptwI0-NCgHfOmn5dT1D2okg2vhu_______________________").getSheetByName("sheet1");
var start = 0;
var threads = GmailApp.getInboxThreads(start, 100);
var range = sheet.getDataRange();
for (var i = 0; i <threads.length; i++){
for (var j = 0; j<6+1; j++){ // replace 4 with the total values in the google sheet
var data = range.getValues();
var iava_value = (data[j][0]);
var message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
// Get its ID
var messageId = message.getId();
console.log(messageId);
//get thread
var thread = GmailApp.getInboxThreads(0,1)[0];
if(messageId==iava_value)
{
thread.moveToTrash();
}
}
}
}
回答1
删除 id 在请求数组中的消息
var request = { "ids": idA };
Gmail.Users.Messages.batchDelete(request, "me");
也许是这样的:
function myFunction() {
var ss = SpreadsheetApp.getActive();
var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1CaptwI0-NCgHfOmn5dT1D2okg2vhu_______________________").getSheetByName("sheet1");
var start = 0;
let idA = [];
var threads = GmailApp.getInboxThreads(start, 100);
var range = sheet.getDataRange();
for (var i = 0; i < threads.length; i++) {
for (var j = 0; j < 6 + 1; j++) { // replace 4 with the total values in the google sheet
var data = range.getValues();
var iava_value = (data[j][0]);
var message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
var messageId = message.getId();
var thread = GmailApp.getInboxThreads(0, 1)[0];
if (messageId == iava_value) {
idA.push(messageId)
}
}
}
if (idA && idA.length > 0) {
var request = { "ids": idA };
Gmail.Users.Messages.batchDelete(request, "me");
}
}