Сценарий приложения Google о том, как создать PDF из данных, полученных из формы html вашей электронной таблицы, и отправить файл PDF по электронной почте - я хотел бы создать файл PDF из данных, записанных на рабочем листе, через пользовательская форма html
У меня есть простая форма html с отправкой электронной почты
это индекс html Файл FORM:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function submitForm(form) {
google.script.run
.withSuccessHandler(function(value){
document.getElementById('message').innerHTML = value;
document.getElementById('name').value = '';
document.getElementById('email').value = '';
document.getElementById('comment').value = '';
})
.submitData(form);
}
</script>
<?!= include("css");?>
</head>
<body>
<h2>Feedback Form</h2>
<div id="message"></div>
<br /><input id="button-responder" style="display:none;" type ="button" onclick="submitResponder();" value = "Nuova iscrizione">
<form id="my-form">
<br /><input id="name" type="text" name="name" placeholder="Your Name">
<br /><input id="email" type="email" name="email" placeholder="Your Email">
<br /><textarea id="comment" rows="10" cols="40" name="comment"></textarea>
<br /><input id="btn" type="button" value="Submit" onclick="submitForm(this.parentNode),document.getElementById('my-form').style.display='none',submitResponder('button-responder');" />
</form>
<?!= include("test-js");?>
</body>
</html>
этот скрипт Google с псевдонимом электронной почты:
function doGet(request) {
return HtmlService.createTemplateFromFile('index')
.evaluate();//not all caps but it has to match the name of the file and it doesn't - Change to PAGE
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
function submitData(form) {
var subject='New Feedback';
var body=Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s', form.name,form.email,form.comment);
var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array
GmailApp.sendEmail('my-email@my-email.com','From an alias', 'A message from an alias!', {'from': aliases[0],subject: subject,htmlBody: body});
return Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s', form.name,form.email,form.comment);
}
function userClicked(userInfo){
var url = "https://docs.google.com/spreadsheets/x/xx-xx-xxx_-xxxxxxxxxx-xxxx/edit#gid=x";
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("Data");
ws.appendRow([userInfo.name, userInfo.email, userInfo.comment]);
}
Это пользовательский javascript файл ("test- js"):
<script>
function submitResponder() {
var x = document.getElementById("button-responder");
var xx = document.getElementById("my-form");
var xxx = document.getElementById("message");
if (x.style.display === "none") {
x.style.display = "block";
xx.style.display = "none";
xxx.style.display = "block";
} else {
x.style.display = "none";
xx.style.display = "block";
xxx.style.display = "none";
}
}
document.getElementById("btn").addEventListener("click",doStuff);
function doStuff(){
var userInfo = {}
userInfo.name = document.getElementById("name").value;
userInfo.email = document.getElementById("email").value;
userInfo.comment = document.getElementById("comment").value;
google.script.run.userClicked(userInfo);
document.getElementById("name").value= "";
document.getElementById("email").value= "";
document.getElementById("comment").value= "";
}
</script>
Это просто файл в стиле css ("css"):
<style>
#message {
color: red;
}
</style>
Я ищу формулу для создания PDF-файла, взяв данные, введенные в формы, и отправив их по электронной почте. Файл должен быть создан в определенной папке / подпапке c на диске. Имя файла должно воспроизводить поле «имя», отредактированное в форме.
Теперь самая важная часть. Я хотел бы, чтобы ссылка на файл PDF отображалась только на странице html, а не в сообщении электронной почты, как показано в примере ниже:
return Utilities.formatString ('name:% s <br /> Email:% s <br /> Comment:% s', form.name, form.email, form.comment)
link to PDF file
Заранее спасибо за помощь!
НОВЫЙ ВОПРОС !!
По отношению к функции, описанной ниже:
function submitData(form) {
var subject='New Feedback';
var body=Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s', form.name,form.email,form.comment);
var folderId = "my-folder-ID"; // Please set the folder ID. // Added
var blob = Utilities.newBlob(body, MimeType.HTML, form.name).getAs(MimeType.PDF); // Added
var file = DriveApp.getFolderById(folderId).createFile(blob); // Added
var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array
GmailApp.sendEmail('my-email@my-email.com','From an alias', 'A message from an alias!', {'from': aliases[0],subject: subject,htmlBody: body, attachments: [blob]}); // Modified
// return file.getUrl(); // Modified
return Utilities.formatString('name: %s <br />Email: %s<br />Comment: %s<br />PDF: %s', form.name,form.email,form.comment,file.getUrl());
}
Я ищу, я пытаюсь вернуться в универсальном c тестовом формате типа "смотрите ваш файл PDF", кликабельный, вместо URL-адреса, в функции:
return Utilities.formatString ('name:% s <br /> Email:% s <br /> Comment:% s <br /> PDF:% s', form.name, form.email, form.comment, file. getUrl ());
I wi sh Я мог бы использовать базовый c документ в качестве шаблона для стиля создания файла PDF, подобного следующему: https://jeffreyeverhart.com/2018/09/17/auto-fill-google-doc-from-google-form-submission/ Имейте в виду, что мое приложение представляет собой пользовательскую форму html, как вы можете видеть из приведенного выше места.
Заранее спасибо за помощь!