Сценарий Google Apps - отправка электронной почты с вложениями в виде ссылок на диск Google, а не с актуальными файлами - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь отправить электронное письмо из скрипта Служб Google, в котором будут прикреплены два файла с моего Диска, и прикрепить их не как настоящие файлы, а скорее как ссылки на файл на Google Диске.Один из файлов - это Google Doc, а другой - MP4 в папке Drive.Вот пример того, что я имею в виду.Если я прикреплю MP4 в виде файла, он будет отображаться в Gmail следующим образом:

Снимок экрана прикрепленного файла

Но я пытаюсь получить егогде он прикрепляется просто как ссылка, которая позволяет получателю просматривать видео прямо в Gmail, например:

Снимок экрана связанного видеофайла (обратите внимание на файл, указанный выше в разделе вложения)

Это будет использоваться как часть Google Sheet, где у меня есть список людей с их адресами электронной почты на листе.После запуска этот скрипт отправит электронное письмо каждому человеку в списке, с вложениями, идентичными для каждого.Вот код, с которым я сейчас работаю:

function sendEmails() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var list = ss.getRange("A1:A").getValues();
  var numRows = list.filter(String).length;
  console.log((numRows - 1) + " emails in queue.");
  for (var i = 2; i <= numRows; i += 1) {
    var name = ss.getRange(i,11).getValue();
    var first = ss.getRange(i,1).getValue();
    var email = ss.getRange(i,4).getValue();
    var doc = DriveApp.getFileById('[id number]');
    var video = DriveApp.getFileById('[second id number]');
    console.log("Pre-email log for " + name);
    MailApp.sendEmail(email,'Subject','', {
      name: 'My Name',
      htmlBody: "<body>HTML content</body>",
      attachments: [doc, video]
    });
    console.log("Email sent for " + name);
  }
  console.log((numRows - 1) + " emails sent.");
}

Теперь, если я продолжу в том же духе, электронное письмо будет отправлено просто отлично, но документ будет отформатирован как PDF, и оба файла будут прикреплены как файл., а не ссылка.Мой поиск побудил меня настроить строку вложения следующим образом:

attachments: [doc.getAs(MimeType.GOOGLE_DOCS), video]

Однако, когда я пытаюсь протестировать функцию, она выдает мне эту ошибку: «Объект Blob должен иметь ненулевые данные для этогооперация «.Я попытался переместить '.getAs(MimeType.GOOGLE_DOCS)' до строки, где определена переменная, но это не сработало.Я также проверил идентификатор документа, и он правильный.

Кроме того, я не могу найти тип MIME, который (предположительно) работал бы для видеофайла.Я перепробовал все доступные варианты, включая 'video/mp4', но, похоже, ничего не работает.Для записи, размер видеофайла составляет ~ 12 МБ.

Я мог бы просто поместить ссылки на общий доступ к файлам диска в теле письма, и это позволило бы выполнить то, что я пытаюсь сделать,но оно помечает письмо как потенциально опасное сообщение из-за того, что оно отправлено через сценарий и содержит пустые ссылки.Это происходит, если я просто помещаю ссылки в себя или использую тег "<a href=''></a>" для создания ссылки.Ранее я отправлял множество писем с помощью скрипта приложений, но без этой проблемы, как с вложенными файлами, так и без них.

Мне кажется, что я просто упускаю что-то простое, но не могу понять, какчтобы получить эти два файла, чтобы прикрепить как ссылки на диск.Это возможно?Можно ли просто как-то встроить ссылки для обмена сообщениями в тело письма, чтобы электронная почта не была помечена как потенциально опасная?

Надеюсь, это имеет смысл;любая помощь будет принята с благодарностью!

...