javascript-使用Google Apps脚本创建“老式”邮件合并的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-使用Google Apps脚本创建“老式”邮件合并的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2738字,纯文字阅读大概需要4分钟。
内容图文
这是我昨天在Google Apps脚本办公时间环聊中提出的问题的跟进.
我最后一个脚本的目标是为我使用Google表单工作的高中创建一个学生选举的选举程序.该脚本包括三个部分:1)创建唯一的“投票ID”(随机的6位数字代码)2)将学生数据(姓名,房室和投票ID)合并到模板文档中,该模板文档将为该文档创建特定的投票指令每个学生. (即老式邮件合并)3)通过检查投票ID并删除重复的投票来验证结果.
我遇到麻烦的脚本部分是学生数据合并(第2步).第一个数据集是唯一起作用的数据集.其余的显示为“ DocumentBodySection”.我感觉这是我是从文档模板复制文本还是将文本添加到新文档中.
包含数据的电子表格:https://docs.google.com/spreadsheet/ccc?key=0AierVcXWELCudFI1LU10RnlIVHNsUm11a0dDWEV6M1E
文档模板:(请参阅后续评论中的url)
脚本创建的文档: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();
}
解决方法:
我通过创建模板的副本,进行文本替换,然后将原始文档中的模板元素附加到副本中来解决此问题.特别是,我使用了:var copyTables = templateDoc.getTables();获取和存储表(因为我的所有模板数据都包含在表中)和copyDoc.appendTable(copyTables [0] .copy());追加副本(末尾的.copy()似乎是真正的魔术).这提供了在友好的Documents界面中更新模板的灵活性,而无需与程序员见面.
内容总结
以上是互联网集市为您收集整理的javascript-使用Google Apps脚本创建“老式”邮件合并的问题全部内容,希望文章能够帮你解决javascript-使用Google Apps脚本创建“老式”邮件合并的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。