【发布时间】:2021-02-16 14:42:39
【问题描述】:
我什至不确定这是否可行,但我有一个 Google 表格,我打算使用带有模板文档的邮件合并方法将它合并到一个 Google 文档中。
我想知道是否可以为工作表的每一行生成一个新的 Google 文档。
目前我使用的脚本将从工作表中获取所有行,将它们传递给模板文件,然后将它们输出到我的最终文档中。工作表的每一行将由最终文档中的分页符分隔。但理想情况下,我希望每一行都在一个单独的文档中。
我当前的脚本代码是
function myFunction() {
var docTemplateId = "docTemplateId";
var docFinalId = "docFinalId";
var wsId = "wsId";
var docTemplate = DocumentApp.openById(docTemplateId);
var docFinal = DocumentApp.openById(docFinalId);
var ws = SpreadsheetApp.openById(wsId).getSheetByName("data");
var data = ws.getRange(2,1,ws.getLastRow()-1,7).getValues();
var templateParagraphs = docTemplate.getBody().getParagraphs();
docFinal.getBody().clear();
data.forEach(function(r){
createMailMerge(r[0],r[3],r[4],templateParagraphs, docFinal);
});
}
function createMailMerge(titre, description, suivantes,templateParagraphs, docFinal) {
templateParagraphs.forEach(function(p) {
var elType = p.getType();
if(elType == "PARAGRAPH"){
docFinal.getBody().appendParagraph(
p
.copy()
.replaceText("{titre}", titre)
.replaceText("{description}", description)
.replaceText("{suivantes}", suivantes)
);
}
else if(elType == "LIST_ITEM") {
docFinal.getBody().appendListItem(
p
.copy()
.replaceText("{titre}", titre)
.replaceText("{description}", description)
.replaceText("{suivantes}", suivantes)
).setGlyphType(DocumentApp.GlyphType.BULLET);
}
});
docFinal.getBody().appendPageBreak();
};
任何人都可以帮助我实现这一目标。我知道我可以为每一行创建文档,然后将它们添加为变量,但也许有更有效的方法。
【问题讨论】:
标签: google-apps-script google-sheets google-docs mailmerge