2014-01-28 1 views
0

Я работаю над этим приложением для своей компании. Он в основном принимает входные данные из формы, размещенной с использованием службы 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> 

ответ

1

просто положил Utilities.sleep (1000); в вашей истории занятости. Функция Write to doc иногда требует медленного вызова.

Смежные вопросы