Note that there are some explanatory texts on larger screens.

plurals
  1. POIssue with creating an "old-fashioned" mail merge with Google Apps Script
    primarykey
    data
    text
    <p>This is a followup to a question I asked yesterday on the Google Apps Script Office Hours Hangout.</p> <p>The goal of my final script is to create an election process for student elections at the high school where I work using Google Forms. The script has three parts: 1) Create Unique "Voting IDs" (a random 6-digit code) 2) Merge the student data (Name, Homeroom, &amp; Voting ID) on with a template document that will create specific voting instruction for each student. (i.e. an old-fashioned mail merge) 3) Verify the results by checking Voting ID's and removing duplicate votes.</p> <p>The part of the script that I am having trouble with is the student data merge (step 2). The first dataset is the only one that works. The rest show up as "DocumentBodySection". I have a feeling it is either how I am copying the text from the Document Template or how I am adding the text to the new document.</p> <p>Spreadsheet w/ Data: <a href="https://docs.google.com/spreadsheet/ccc?key=0AierVcXWELCudFI1LU10RnlIVHNsUm11a0dDWEV6M1E" rel="nofollow">https://docs.google.com/spreadsheet/ccc?key=0AierVcXWELCudFI1LU10RnlIVHNsUm11a0dDWEV6M1E</a></p> <p>Document Template: (see followup comment for url)</p> <p>Document Created by Script: <a href="https://docs.google.com/document/d/12r2D9SpIVmQYVaasMyMWKjHz6q-ZZyIMEBGHTwlQct8/edit" rel="nofollow">https://docs.google.com/document/d/12r2D9SpIVmQYVaasMyMWKjHz6q-ZZyIMEBGHTwlQct8/edit</a></p> <pre><code>//Get Settings &amp; Data ss = SpreadsheetApp.getActiveSpreadsheet(); source_sheet = ss.getSheetByName("Student Data"); settings_sheet = ss.getSheetByName("SETTINGS"); results_column = settings_sheet.getRange("B19").getValue(); source_column = settings_sheet.getRange("B18").getValue(); source_lastrow = source_sheet.getLastRow(); docTemplateID = settings_sheet.getRange("B13").getValue(); docCopyName = settings_sheet.getRange("B14").getValue(); //Merge Student Data with Document function SendDataMerge () { // Open docTemplate and Copy Contents to entryTemplate var docTemplate = DocumentApp.openById(docTemplateID); var entryTemplate = docTemplate.getActiveSection(); docTemplate.saveAndClose(); // Make a NEW copy of docTemplate var docTemplate = DocsList.getFileById(docTemplateID); var docCopy = DocsList.copy(docTemplate, docCopyName); var docCopyID = docCopy.getId(); // Create Array of Student Data (First, Last, Grouping, VID) var data = source_sheet.getRange("A2:D"+source_lastrow).getValues(); // Open docCopy for Editing &amp; Clear Contents var doc = DocumentApp.openById(docCopyID); var docText = doc.editAsText(); // Run through Student Data for(var i=0; i&lt;5 /*data.length*/; i++) { //For testing, limit this to 5 entries var lastName = data[i][0]; var firstName = data[i][1]; var grouping = data[i][2]; var vid = data[i][3]; docText.replaceText('keyLastName', lastName); docText.replaceText('keyFirstName', firstName); docText.replaceText('keyGrouping', grouping); docText.replaceText('keyVID', vid); docText.appendText('\n*** Appended Text (End of entry) ***'); docText.appendText(entryTemplate); } // Save and Close doc.saveAndClose(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload