Прикрепите несколько файлов - Google Sheets / Gmail / Drive - PullRequest
0 голосов
/ 01 марта 2019

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

Любые советы о том, как получить (1) и (2) [ниже]

Обновлено для получения дополнительной информации:

Основная цель - добавить несколько имен файлов в Col [3] и прикрепить файлы к черновику, используя имена файлов, предоставленные в Col [3].Пример: если я введу следующее в Col [3]: «test.pdf, test2.pdf», он присоединит файлы «test.pdf» и «test2.pdf» для этого конкретного черновика.На данный момент скрипт прикрепляет один файл к черновику, но если я ввожу несколько имен файлов, разделенных запятыми, он вообще не создает черновик.

Я прикрепил снимок экрана с таблицейКогда я запускаю сценарий, я вижу это ниже (в настоящее время я не могу встраивать изображения):

https://imgur.com/a/sVoHO3Q

Когда я запускаю сценарий, используя информацию из скриншота, 2-я строка не создаетчерновик вообще, 3-я строка создает черновик с вложением, а 4-я строка вообще не создает черновик.

Можно ли создать черновик и прикрепить несколько файлов, используя имена файлов, разделенные запятыми, а такжесоздавать черновики, когда некоторые ячейки в Col [3] пусты?

TLDR:

  1. Как прикрепить несколько файлов к отдельным черновикам

  2. Как создать черновик без вложений

function SaveDrafts() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var rows = 1000;
  var dataRange = sheet.getRange(startRow, 1, rows, 5);
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];
    var subject = row[1];
    var message = row[2];
    var pdfName = row[3];
    var cc = row[4];
    var list = DriveApp.getFilesByName(pdfName);

    if (list.hasNext()) {
      var File = list.next();
      GmailApp.createDraft(emailAddress, subject, message, {
        cc: cc,
        attachments: [File]
      });
    }
  }
}

1 Ответ

0 голосов
/ 02 марта 2019

Обновление: Во-первых, я выполнил split() для значений ячейки pdfName, чтобы я мог искать и добавлять один файл за раз.

Черновиксоздание будет выполняться только при наличии файлов, поскольку оно находится внутри оператора list if, никакие файлы не означают, что оно не запустится.

Я извлек это из этого и создал Интератор для list и массив файлов, которые можно передать функции createDraft().Итератор позволяет добавлять несколько файлов в массив files, если DriveApp.getFilesByName(pdfName) возвращает несколько файлов.

function SaveDrafts() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var rows = 1000;
  var dataRange = sheet.getRange(startRow, 1, rows, 5);
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];
    var subject = row[1];
    var message = row[2];
    var pdfName = row[3].split(','); //split the values taken from cell into array
    var cc = row[4];

    var files = []; //initialize files as empty array.

    for(var j in pdfName){ //run through cell values and perform search
      var results = DriveApp.getFilesByName(pdfName[j]); //Perform the search,results is a FileIterator

      while(results.hasNext()) { //Interate through files found and add to attachment results
        files.push(results.next()); //Add files to array
      }
    }

    GmailApp.createDraft(emailAddress, subject, message, {
      cc: cc,
      attachments: files //the attachments option takes our files array
    });

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