Информация об отправителе файла CSV с помощью скрипта приложения - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь извлечь информацию из электронных писем (адрес электронной почты, тема, дата) из папки входящих сообщений Gmail, содержащей файл CSV во вложении. Но мне удалось извлечь файл CSV с определенного адреса электронной почты. Есть ли способ, которым мы можем получить информацию обо всех электронных письмах, которые имеют файл CSV во вложении? Любая помощь будет оценена.

 function import() {
   var threads = GmailApp.search('in:inbox from:"example@gmail.com"');

  if (threads.length===0)
    return;
 var messages = threads[0].getMessages();
 var message = messages[messages.length - 1];
 var attachment = message.getAttachments()[0];
  attachment.setContentType('text/csv');

 // Is the attachment a CSV file
 if (attachment.getContentType() === "text/csv") {

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");

    var csvData = Utilities.parseCsv(attachment.getDataAsString(), ",");


  // Remember to clear the content of the sheet before importing new data
   sheet.clearContents().clearFormats();
   sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

// GmailApp.moveMessageToTrash(message);
  }
}

1 Ответ

0 голосов
/ 22 января 2020
  • var messages = threads[0].getMessages(); означает, что вы запускаете код только для первого потока.
  • Если вы хотите получить вложения из всех потоков, вам нужно перебрать ваши потоки с помощью al oop.
  • Чтобы получить отправителя сообщения, вы можете использовать getFrom () method.

В следующем примере извлекаются отправители всех последних сообщений ваших потоков, которые имеют вложение CSV. Отправители хранятся в массиве:

 function import() {
  var threads = GmailApp.search('in:inbox from:"example@gmail.com"');
  if (threads.length==0)
    return;
  var senders = [];
  for( var i = 0; i < threads.length; i++){
   var messages = threads[i].getMessages();
   var message = messages[messages.length - 1];
   var attachment = message.getAttachments()[0];
    attachment.setContentType('text/csv');
   // Is the attachment a CSV file
   if (attachment.getContentType() == "text/csv") {
      var sender = message.getFrom();
      senders.push(sender);
     // do whatever else you want to do
     ...
    }
  }
  Logger.log(senders);
}

Этот образец будет перебирать последнее сообщение каждого потока. Если вы хотите перебрать все сообщения всех потоков, вам нужно реализовать вторую вложенную l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...