Как загрузить вложение электронной почты, отправленное в виде application / octet-stream, на диск Google - PullRequest
0 голосов
/ 29 мая 2018

Я получаю ночные электронные письма, которые содержат файлы Excel в виде вложений, однако отправляющая компания не определяет тип контента, поэтому файлы приходят с типом контента = application / octet-stream

Мой скрипт пытается загрузитьфайлы на мой гугл-диск, как Google Sheets, однако загрузка не удалась, так как скрипт не знает, какой это тип файла.

Я попытался переслать вложение и указать правильный тип содержимого, но переадресованный файл.также поступает как поток октетов.

Любые идеи, что я могу сделать, чтобы обойти это?

Суть кода, который я использую, заключается в следующем:

var ureadMsgsCount = GmailApp.getInboxUnreadCount();
if (ureadMsgsCount > 0) {

var threads = GmailApp.search("Excel Files")
for (var i = 0; i < threads.length; i++) {
  if (threads[i].isInInbox()) {

    messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {

      if (messages[j].isUnread()) {

        var attachments = messages[j].getAttachments();
        for (var k = 0; k < attachments.length; k++) {

          // Is the attachment an excel file
          var excelFile = attachments[k];
          var fileName = attachments[k].getName();
          var contentType = attachments[k].getContentType();

          if (fileName.indexOf("xls") > -1) {
            var folderId = getFolderID('saved files');
            var resource = {
              title: fileName.replace(/.xls?/, ""),
              mimeType: 'application/vnd.google-apps.spreadsheet',
              parents: [{ id: folderId }]
            };
            Drive.Files.insert(resource, excelFile);
          }
         }
        }
      }
    }
  }
}

большое спасибо.

Выдается сообщение об ошибке "GoogleJsonResponseException: указан неверный тип пантомимы"

1 Ответ

0 голосов
/ 31 мая 2018

Для всех, кто столкнулся с этой проблемой, я смог решить ее с помощью метода setContentTypeFromExtension () из класса GmailApp.

Просто замените

var excelFile = attachments[k];
var fileName = attachments[k].getName();
var contentType = attachments[k].getContentType();

с

var excelFile = attachments[k].setContentTypeFromExtension();
var fileName = attachments[k].getName();
var contentType = excelFile.getContentType();

Конечно, это можно записать в меньшем количестве строк, но удобно иметь отдельные значения при запуске в отладке.

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