這是我昨天就Google Apps Script Office Hours Hangout提出的問題的後續活動。使用Google Apps腳本創建「老式」郵件合併問題
我最終腳本的目標是在高中,我的工作使用谷歌形式來爲學生創造一個選舉的選舉過程。該腳本有三個部分:1)創建獨特的「投票ID」(一個隨機的6位代碼)2)合併學生數據(姓名,本室,&投票ID)與模板文件,將創建具體的投票指令學生。 (即舊式郵件合併)3)通過檢查投票ID並刪除重複投票來驗證結果。
,我遇到的麻煩腳本的一部分是學生數據合併(步驟2)。第一個數據集是唯一可用的數據集。其餘顯示爲「DocumentBodySection」。我有一種感覺,那就是我如何複製文檔模板中的文本,或者我如何將文本添加到新文檔中。
電子表格W /數據:https://docs.google.com/spreadsheet/ccc?key=0AierVcXWELCudFI1LU10RnlIVHNsUm11a0dDWEV6M1E
文檔模板:(參見網址後續評論)
文檔創建者腳本:https://docs.google.com/document/d/12r2D9SpIVmQYVaasMyMWKjHz6q-ZZyIMEBGHTwlQct8/edit
//Get Settings & 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 & Clear Contents
var doc = DocumentApp.openById(docCopyID);
var docText = doc.editAsText();
// Run through Student Data
for(var i=0; i<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();
}
文檔模板:[鏈接](https://docs.google.com/document/d/1BdYkmHFzXcgiTVf4Hu6YsVlt20lpCLh9JR8LHMd9itk/edit) –