Я вижу много других сообщений о "слиянии почты", но ни один из них не проходит через все шаги, которые я пытаюсь достичь ..
- Получить все данные строк из Gsheetи объединить его с скопированным Gdoc (из шаблона)
- . Использовать недавно слитый Gdoc, чтобы сгенерировать копию в виде PDF
- . Возьмите pdf и отправьте его в виде вложения в электронное письмо
- Сохранение PDF в Gdrive в определенной папке (имена папок по дате)
- Удаление Gdoc, из которого был создан PDF.
Сейчас я пытаюсь выполнить все эти шаги в рамках одного сценария.Я предполагаю, что есть более эффективные способы использования различных триггеров, но я собрал их как можно скорее, потому что это нужно было реализовать на работе.Так что теперь я пытаюсь вернуться и улучшить код (поскольку я не смог выполнить все необходимые шаги, описанные выше).
На данный момент я смог создать объединенный документ и отправить егокак PDF в электронном письме.Я не смог сохранить PDF-копию недавно созданного Gdoc в Gdrive, я только сохраняю версию Gdoc (которую я не хочу, я просто хочу сохранить PDF).
Кроме того, сейчас я сохраняю все в одну папку.В идеале я хотел бы пройтись по родительской папке, посмотреть, существует ли папка (с тем же именем .. которая является датой), а затем создать эту папку, если она не существует.
За последние пару дней я много гуглял и пробовал много вещей, но я не могу по-настоящему хорошо понять эту идею «блоба» с GAS, и я не совсем уверен, если мне НУЖНО использовать некоторыетип аутентификации в скрипте для доступа к сгенерированному PDF-файлу (пока скрипт еще работает).
var rowNum = ss.getDataRange().getLastRow();
var tstamp = sheet.getRange(rowNum, 1, 1, 9).getValue();
var pname = sheet.getRange(rowNum, 2, 1, 9).getValue();
var phone = sheet.getRange(rowNum, 3, 1, 9).getValue();
var email = sheet.getRange(rowNum, 4, 1, 9).getValue();
var address = sheet.getRange(rowNum, 5, 1, 9).getValue();
var city = sheet.getRange(rowNum, 6, 1, 9).getValue();
var state = sheet.getRange(rowNum, 7, 1, 9).getValue();
var zip = sheet.getRange(rowNum, 8, 1, 9).getValue();
var dob = sheet.getRange(rowNum, 9, 9, 9).getValue();
var rdate = sheet.getRange(rowNum, 10, 1, 10).getValue();
var dobf = Utilities.formatDate(dob, "GMT-7", "MM/dd/yyyy");
//Start GOOGLE DOC
var docTemplateId = "1ZtOZ6c****KF86JKHeqpeH****TcLG-3laftW2SEirHA";
//Make A Copy Of The Template To Folder Then Grab ID
var newDoc = DriveApp.getFileById(docTemplateId).makeCopy(pname, destinationFolder); var documentId = newDoc.getId();
//Rename The Copied Template
var newName = DriveApp.getFileById(documentId).setName("Sales Lead | " + pname);
//Open The Copied Doc
var openNewFile = DocumentApp.openById(documentId);
//Get ID of New Doc
var newId = openNewFile.getId();
//Get ID of New Doc
var body = openNewFile.getBody();
//Get URL of New Doc (used to print out download link on Gsheet upon completion)
var docURL = openNewFile.getUrl();
//Replace the tags on the Gdoc Template
body.replaceText("{{Timestamp}}", tstamp);
body.replaceText("{{Name}}", pname);
body.replaceText("{{Phone Number}}", phone);
body.replaceText("{{Email}}", email);
body.replaceText("{{Street Address}}", address);
body.replaceText("{{City}}", city);
body.replaceText("{{State}}", state);
body.replaceText("{{Zip Code}}", zip);
body.replaceText("{{Date of Birth}}", dobf);
body.replaceText("{{Date Received}}", today);
//Add Users
var addUsers = openNewFile.addEditor('example@gmail.com');
var save = openNewFile.saveAndClose();
//Generate PDF
var pdf = DriveApp.getFileById(newId).getAs('application/pdf').getBytes();
var pdfURL = DriveApp.getFileById(newId).getUrl();
//Create Attachment
var attach = {fileName: 'Sales Lead | ' + pname, content:pdf, mimeType:'application/pdf'};
//Write "Today's" Date
var writeDate = sheet.getRange("J"+rowNum).setValue(today);
//Write Lead "Complete" And Add "Link"
var complete = sheet.getRange("K"+rowNum).setValue("ASBsw Lead Generated");
//Write URL to GSheet
var writeURL = sheet.getRange("L"+rowNum).setValue(pdfURL);
//Send Email
MailApp.sendEmail("company@mycompany.com", "Sales Lead | " + pname + " | " + today, "See Attached PDF", {
attachments: [attach],
name: newName
});
Пропущенные шаги
Переберите GDrive Folders (в пределах родительского) и проверьте, существует ли (дочерняя) папка, используя переменную dobf из данных GSheet.Если его не существует, создайте его.Если это так, переместите новый PDF-файл в эту папку.
Этот код в настоящее время сохраняет GDoc в GDrive.Вместо этого я хочу получить PDF-копию GDoc, сохранить ее в указанной папке, а затем удалить GDoc
Распечатать URL-адрес загрузки для вновь созданного PDF-файла в GSheets ... вместопечать URL GDoc (как я сейчас).
PS Я знаю, что в некоторых случаях это не очень "СУХОЙ" код.Так что более опытным программистам не понравится повторение, перечисленное выше.Я начал изучать кодирование около 10 месяцев назад и GAS, около недели назад.Я использовал Дополнение, чтобы достигнуть всего этого прежде, и это внезапно стало ЧЕРНЫМ на прошлой неделе!Это привело к региональному краху автоматизации нашей компании, что ... было не очень хорошо (мягко говоря).Я буквально купил курс Udemy и выучил GAS за пару дней, и пару дней назад мне удалось восстановить и запустить нашу автоматизацию (есть еще 4 аналогичных слияния, которые мы используем).Я извиняюсь перед более опытными программистами, которые могут это читать.