google-apps-script - Google apps script 使用 Google 的消息 ID 删除 gmail 消息

我在 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");
  }
}

相似文章