Скрипт неправильно пересылает вложения электронной почты

#google-apps-script #gmail #email-attachments

#google-приложения-скрипт #gmail #электронная почта-вложения

Вопрос:

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

Однако вложения в формате .pdf (счет-фактура) пересылаются неправильно: при просмотре переадресованного электронного письма вложение не является настоящим файлом .pdf (см. Рисунок ниже сценария), и мое бухгалтерское программное обеспечение не может получить доступ к файлу .pdf.

Есть какие-либо указания относительно того, что происходит не так?

 function FwdInvoices() {
  var getLabel = GmailApp.getUserLabelByName('Purchase Invoice');
  var setLabel = GmailApp.getUserLabelByName('Purchase Invoice/Processed');
  var recipient = 'xxxxxxx@mail.autoentry.com';
  
  var userId = "me";
  var label = "Purchase Invoice/Processed";
  var labelId = Gmail.Users.Labels.list(userId).labels.filter(function(e){return e.name == label})[0].id;
  
  
  var threads = getLabel.getThreads();
  for (var i = 0; i < threads.length; i  ) {
    
    var thread = threads[i];
    var message = thread.getMessages()[0];
    var messageId = message.getId()
    
    message.forward(recipient);

    thread.removeLabel(getLabel);
    //thread.addLabel(setLabel) - not using this - see below why
   
    //add label to message only (not thread - if label applied to whole thread the sent message will have label applied and show up in 'Processed' label view.
    Gmail.Users.Messages.modify({"addLabelIds": [labelId]}, userId, messageId)
    
    //thread.moveToArchive()    
         
  }
   
}
  

Вот как выглядит вложение, почти как если бы это был файл, связанный через диск, а не сам файл. Если я нажму на него, мне будет предложено выбрать cloud .pdf viewer, а не обычный немедленный просмотр .pdf.

введите описание изображения здесь

Ответ №1:

При пересылке вложений с помощью GmailApp вложения не включаются автоматически

Однако вы можете легко включить их вручную с помощью дополнительных параметров.

Пример:

     var message = thread.getMessages()[0];
    var messageId = message.getId();
    var attachments = message.getAttachments();
    message.forward(recipient, {attachments:attachments});