0

I have a code that downloads email attachments to Google Drive. The attachments are in XLS format. However, they are recognized as Word documents on GDrive. How can I fix this?

function downloadAttachmentsAndMarkAsRead() {
  var senderEmail = "support@site.com";
  var searchQuery = "from:" + senderEmail + " is:unread has:attachment filename:xls";

  var threads = GmailApp.search(searchQuery);

  var folder = DriveApp.getFolderById("1i8Bh0cy3R1hRFix9t4yc0fCTksLD4oNY");

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

      message.markRead();

      //var attachments = message.getAttachments({ mimeType: MimeType.MICROSOFT_EXCEL });//.getAs("application/vnd.ms-excel"); //({ mimeType: "application/vnd.google-apps.spreadsheet" }); //({ mimeType: "application/vnd.ms-excel" });
      var attachments = message.getAttachments();

      for (var k = 0; k < attachments.length; k++) {
        attachment = attachments[k];
        contentType = attachment.getContentType();
        Logger.log(contentType);
        //attachment.getAs("application/vnd.google-apps.spreadsheet");
        //attachment.getAs(MimeType.MICROSOFT_EXCEL);
        //var file = folder.createFile(attachment.copyBlob(), attachment.getName(), { mimeType: MimeType.MICROSOFT_EXCEL });
        //var file = folder.createFile(attachment.copyBlob(), attachment.getName(), MimeType.MICROSOFT_EXCEL );

        var file = folder.createFile(attachment.copyBlob());
        var fileId = file.getId();
        Drive.Files.update({ mimeType: "application/vnd.ms-excel" }, fileId);

        Logger.log("Downloaded: " + file);
      }
    }
  }
}

1 Answers1

1

SOLVED:

attachment.setContentType(MimeType.MICROSOFT_EXCEL);

XLSX from Gmail to Google Sheets: invalid mime type. Content type seems to be application/octet?