Я работаю над этим приложением для своей компании. Он в основном принимает входные данные из формы, размещенной с использованием службы HTML, и создает отформатированное резюме через документы со входом. Проблема, с которой я столкнулся, такова:Приложение HTML для создания gdoc резюме из формы ввода
В моей HTML-форме я включил кнопку, чтобы форма добавила больше полей (для истории занятий). Я написал цикл for, который выполняет итерации через все входы этого конкретного раздела формы и добавляет их в документ google. Когда список занятий составляет> 3, скрипт не может записать их в документ.
Когда я запускаю регистратор в списке, (empHist), я вижу, что он видит все данные, но он не будет записывать все это в документ. Мысли?
Вот весь код:
Code.gs
function doGet() {
var html = HtmlService.createTemplateFromFile('page').evaluate()
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
.setTitle('ResuMake Test');
return html
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
function processForm(form) {
var formInput = {
firstName: form.canFirst,
lastName: form.canLast,
sizzle: form.sizzle,
clinDoc: form.clinDoc,
stork: form.stork,
beacon: form.beacon,
anesthesia: form.anesthesia,
empName: form.empName,
empYears: form.empYears,
description: form.description,
school: form.school,
eduYears: form.eduYears,
degree: form.degree
};
var certs = [formInput.clinDoc, formInput.stork, formInput.beacon, formInput.anesthesia];
var empHist = [formInput.empName, formInput.empYears, formInput.description];
var gDoc = DocumentApp.create("Resume for: " + formInput.firstName + " " + formInput.lastName);
var doc = gDoc.getBody();
var img = UrlFetchApp.fetch('http://i.imgur.com/s6wnamr.jpg');
var title = {};
var h1 = {};
var plain = {};
title[DocumentApp.Attribute.FONT_SIZE] = 21;
h1[DocumentApp.Attribute.FONT_SIZE] = 16;
plain[DocumentApp.Attribute.FONT_SIZE] = 11;
//Logo
doc.setMarginTop(25).appendImage(img).setHeight(50).setWidth(150);
doc.appendParagraph(formInput.firstName + " " + formInput.lastName)
.setAlignment(DocumentApp.HorizontalAlignment.CENTER).setAttributes(title);
//Candidate Name
doc.appendParagraph("Candidate Summary").setAttributes(h1);
//Sizzle
doc.appendParagraph(formInput.sizzle).setAttributes(plain);
//Epic Certs
doc.appendParagraph("Epic Certifications").setAttributes(h1);
for (var i = 0; i < certs.length; i++) {
if (certs[i] != null) {
var listItem = doc.appendListItem(certs[i]).setGlyphType(DocumentApp.GlyphType.BULLET).setAttributes(plain);
}
}
//Employment History
doc.appendParagraph("Employment History").setAttributes(h1);
for (var e = 0; e <= empHist.length + 1; e++) {
doc.appendTable([[empHist[0][e], empHist[1][e]]]).setAttributes(h1)
.setBorderWidth(0);
doc.appendParagraph(empHist[2][e]).setAttributes(plain);
}
//Education
doc.appendParagraph(formInput.school + " " + formInput.eduYears).setAttributes(h1);
doc.appendParagraph(formInput.degree).setAttributes(h1);
}
page.html (форма)
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
.row {padding: 5px;}
.pad {padding: 8px;}
.body {width: 800px; height: 600px;}
</style>
<div class="container body">
<form id="root">
<div class="row nameRow">
<h3>Candidate Name</h3>
<div class="col-xs-6">
<input type="text" class="form-control" name="canFirst" placeholder="First Name">
</div>
<div class="col-xs-6">
<input type="text" class="form-control" name="canLast" placeholder="Last Name">
</div>
</div>
<div class="row sizlRow">
<h3>Candidate Summary</h3>
<div class="col-sm-4">
<textarea class="form-control" rows="3" placeholder="Candidate Summary" name="sizzle"></textarea>
</div>
</div>
<div class="row modRow">
<h3>Epic Modules</h3>
<div class="col-sm-4">
<label class="checkbox-inline">
<input type="checkbox" name="clinDoc" value="ClinDoc">ClinDoc
</label>
<label class="checkbox-inline">
<input type="checkbox" name="stork" value="Stork">Stork
</label>
<label class="checkbox-inline">
<input type="checkbox" name="beacon" value="Beacon">Beacon
</label>
<label class="checkbox-inline">
<input type="checkbox" name="anesthesia" value="Anesthesia">Anesthesia
</label>
</div>
</div>
<div class="row emphistRow">
<h3>Employment History</h3>
<div class="col-xs-6 pad">
<input type="text" class="form-control input-sm" name="empName" placeholder="Employer/Org">
</div>
<div class="col-xs-6 pad">
<input class="form-control input-sm" name="empYears"type="text" placeholder="Years">
</div>
<div class="container pad">
<textarea class="form-control" name="description" rows="3" placeholder="Job Description"></textarea>
</div>
</div>
<button type="button" id="addEmp" class="btn btn-default">Add Another Job</button>
<div class="row eduRow">
<h3>Education</h3>
<div class="col-xs-6 pad">
<input type="text" class="form-control input-sm" name="school" placeholder="School/Institution">
</div>
<div class="col-xs-6 pad">
<input class="form-control input-sm" name="eduYears" type="text" placeholder="Years">
</div>
<div class="container pad">
<textarea class="form-control" rows="3" name="degree" placeholder="Degree Info"></textarea>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<button type="button" class="btn btn-success btn-block" onclick="google.script.run.processForm(document.getElementById('root'))">resuMake!</button>
</div>
<div class="col-xs-6">
<button type="button" class="btn btn-danger btn-block" onclick="google.script.host.close()">Close</button>
</div>
</div>
</form>
</div>
<script>
google.script.run.processForm();
</script>
<?!= include("script"); ?>
script.html (JQuery для формы)
<script>
var orgName = '<div class="col-xs-6 pad">' +
' <input type="text" class="form-control input-sm" name="empName" placeholder="Employer/Org">' +
'</div>' +
'<div class="col-xs-6 pad">' +
' <input class="form-control input-sm" name="empYears" type="text" placeholder="Years">' +
'</div>' +
'<div class="container pad">' +
'<textarea class="form-control" name="description" rows="3" placeholder="Job Description"></textarea>' +
' </div>'
$('#addEmp').click(function(){
var addEmpButton = $(this);
$('.emphistRow').append(orgName);
});
</script>