Скрипт Google Apps: сохранение вложения Gmail на Google Диске - PullRequest
2 голосов
/ 12 ноября 2019

Я довольно близок к завершению проекта сценария Служб Google, в котором анализируется простое двухстрочное электронное письмо и добавляется ссылка на вложение (вложение, сохраненное на Google Диске) в Google Sheets.

Я застряло сохранении вложения электронной почты в Google Drive. Код, который закомментирован, является блоком, который работает неправильно. Я взял пример из: Сохранение вложений Gmail на Google Диске - Но, похоже, он не работает для меня.

В приложении мой полный код.

function parseEmailMessages() {

  var threads = GmailApp.search('label:test',0,100);
  var sheet = SpreadsheetApp.openById('<<SHEET ID>>');
  var folder = DriveApp.getFolderById('<<FOLDER ID>>');
  var testLabel = GmailApp.getUserLabelByName('test');
  var doneLabel = GmailApp.getUserLabelByName('finished');

  for (var i = 0; i < threads.length; i++) {
    var message = threads[i].getMessages();
    for (var j in message) {
      var content = message[j].getPlainBody();

      /*
      var attachments = threads[j].getAttachments();
      for (var k in attachments) {
      var attachment = attachments[k];
        var isDefinedType = checkIfDefinedType_(attachment);
        if (!isDefinedType) continue;
        var attachmentBlob = attachment.copyBlob();
        var file = DriveApp.createFile(attachmentBlob);
      }
      */

    }

    var [name, date] = content.split("\n");    

    function latestFile() {
      var gDriveFolder = DriveApp.getFolderById('<<FOLDER ID>>');
      var gDriveFile = gDriveFolder.getFiles();
      var lastFileId = gDriveFile.next().getId(); 
      return lastFileId.toString();
    }

    var urlStart = 'https://drive.google.com/a/<<DOMAIN>>/file/d/';
    var urlString = latestFile();
    var urlEnd = '/view?usp=drivesdk';    
    var pic = urlStart + urlString + urlEnd;

    sheet.appendRow([name,date,pic]);

    threads[i].removeLabel(testLabel);
    threads[i].addLabel(doneLabel);

  }
}

Я получаю сообщение об ошибке: «TypeError: Невозможно найти функцию getAttachments в объекте GmailThread.»

Это правда, что getAttachments не является частью GmailThread в документации, но я не уверен, как это сделать. достичь моей цели на данный момент.

1 Ответ

1 голос
/ 12 ноября 2019

getAttachments() не является методом класса GmailThread. Так как насчет следующей модификации?

От:

var attachments = threads[j].getAttachments();

До:

var attachments = message[j].getAttachments();

Ссылка:

Если это не было прямым решением, я прошу прощения.

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