Извлечение темы и основного текста из сообщений Gmail и экспорт в CSV - PullRequest
0 голосов
/ 18 апреля 2020

Мой текущий проект состоит в том, чтобы взять набор писем из моей учетной записи Gmail и создать из них книгу, где каждое письмо является главой. Я написал фрагмент сценария Google Script, который успешно извлекает тему, дату и основной текст из всех электронных писем под определенным ярлыком и записывает их в Документ Google. Это не совсем идеально, так как я бы предпочел, чтобы в конечном итоге весь этот текст был в уценке или в LaTeX для более тщательного форматирования, но я только знал, как писать в Google Do c на основе Gmail API.

Самый быстрый способ для меня от A до B - выяснить, как изменить этот код, чтобы он записывал текст в файл CSV, содержащий столбцы subject, date и body. Оттуда я могу обработать и разобрать его в LaTeX и назначить вместо него необходимые стили и форматы заголовков; Тем не менее, я не вижу большого руководства по этому формату файлов в API. Любое руководство о том, как адаптировать этот скрипт для этой цели, будет очень кстати. Спасибо.

function collectLetters() {

  var fileName = 'OUTPUT_GOOGLE_DOC_FILENAME';
  var labelName = 'MY_LABEL';
  var timeZoneName = 'GMT'
  var dateFormat = "dd | MM | yyyy"

  var docBody;
  var subject;
  var date;
  var body;
  var message;
  var num;
  var datePar;
  var bodyPar;
  var subjectPar;
  var numPar;

  // get the handle for label
  var label = GmailApp.getUserLabelByName(labelName);
  var threads = label.getThreads();

  // Create a new Google Doc
  var doc = DocumentApp.create(fileName);

  // get all the threads from label
  for (var i = threads.length-1; i >= 0; i--) {

    // EXTRACT FROM EMAIL: date, subject and body
    message = threads[i].getMessages()[0];
    subject = message.getSubject();
    date = Utilities.formatDate(message.getDate(), timeZoneName, dateFormat)
    body =  message.getPlainBody().replace(/\r\n\r\n/gm,'aaaLINEBREAKERaaa').replace(/\r\n/gm,' ').replace(/  /gm,' ')
    var splitBody = body.split('aaaLINEBREAKERaaa');

    // APPEND TO GOOGLE DOC: Date (as Header)
    datePar = doc.getBody().appendParagraph(date);
    datePar.setHeading(DocumentApp.ParagraphHeading.HEADING1);

    // APPEND TO GOOGLE DOC: Subject (as Subtitle)
    if (subject.length > 0) {
      subjectPar = doc.getBody().appendParagraph(subject);
    }
    else{
      subjectPar = doc.getBody().appendParagraph("no subject");
    }
    subjectPar.setHeading(DocumentApp.ParagraphHeading.SUBTITLE);

    // APPEND TO GOOGLE DOC: Body (as Normal)
    docBody = doc.getBody()
    splitBody.forEach(function (paragraphText) {
      this.appendParagraph(paragraphText).setHeading(DocumentApp.ParagraphHeading.NORMAL);
    }, docBody);

    // Start a new page
    doc.getBody().appendPageBreak();
    //Logger.log(subject);

  }

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