В настоящее время у меня есть скрипт для создания черновиков писем, а также прикрепления к ним файла. В настоящее время скрипт не работает для нескольких файловых вложений, а также не работает, если вложений нет.
Любые советы о том, как получить (1) и (2) [ниже]
Обновлено для получения дополнительной информации:
Основная цель состоит в том, чтобы добавить несколько имен файлов в Col[3] и прикрепить файлы к черновику, используя имена файлов, указанные в Col[3]. Пример: если я наберу в Col[3] следующее: "test.pdf, test2.pdf" он прикрепит файлы «test.pdf» и «test2.pdf» для этого конкретного проекта. На данный момент сценарий прикрепляет к черновику один файл, но если я ввожу несколько имен файлов, разделенных запятыми, черновик вообще не создается.
Ниже я приложил скриншот того, как электронная таблица выглядит при запуске скрипта (в настоящее время я не могу вставлять изображения):
Когда я запускаю скрипт, используя информацию со скриншота, 2-я строка вообще не создает черновик, 3-я строка создает черновик с вложением, а 4-я строка вообще не создает черновик.
Можно ли создать черновик и прикрепить несколько файлов, используя имена файлов, разделенные запятыми, а также создать черновики, когда некоторые ячейки в столбце [3] пусты?
TLDR:
Как прикрепить несколько файлов к отдельным черновикам
Как создать черновик без вложений
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]
});
}
}
}Я также хотел бы больше информации. Как это выглядит, когда несколько файлов связаны с одним черновиком электронной почты? Есть ли несколько имен файлов, разделенных запятыми, в строке 3?
Привет, Танайке и Дастин. Спасибо за быстрый ответ. Я обновил сообщение с дополнительной информацией и добавил скриншот. Пожалуйста, дайте мне знать, если есть что-то еще, что я могу добавить.
@Matt Спасибо за ответ и добавление дополнительной информации. Я заметил, что ответ уже был опубликован только что. Я думаю, что это решит вашу проблему.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обновлять:
Во-первых, я выполнил 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
});
}
}
Насчет
How to attach multiple files to individual drafts, я не могу понять, что вы хотите сделать из вашего скрипта. В вашей ситуации вlistвvar list = DriveApp.getFilesByName(pdfName)есть одно значение. И есть несколько файлов с одинаковым именем. Правильно ли я понимаю? Можете ли вы предоставить подробную информацию об этом? Получив информацию, я хотел бы подумать о решении.