Я новичок в JavaScript и Google Apps Script, и я пытаюсь выполнить слияние, используя Документы и Листы на основе учебника, который я нашел. У меня это работает, но если я пытаюсь объединить более 10 строк данных, он выдает ошибку saveAndClose, а затем снова открывает файл. Я нашел ответы в разных темах, но пока не знаю достаточно, чтобы взять ответы и применить их к своему коду. Я в основном хочу настроить al oop, где он объединяет 10 записей, сохраняет, закрывает, открывает и открывает следующие десять и так далее, пока все записи не будут объединены. Любая помощь приветствуется. Спасибо!
Вот что я использую для первых 10 записей:
//Open files and access content and data
function getData() {
//Associate related files to ID numbers
var docTemplateId = "16jIkcSGqoVWQTqXFdyRUgg6lmlxKga1ApCW3RxYeWH4";
var docMergedId = "1KMHjj39WAuN--hg_gumUm7AbH7tqM5NXn4dSsbYXMZU";
var docDataSheetId = "19unkB1ViFCgz8lIUzsMHAZqX0PC99Isa3Ag2S_Ew6mI";
//Open associated Docs by ID
var docTemplate = DocumentApp.openById(docTemplateId);
var docMerged = DocumentApp.openById(docMergedId);
//Open data source by ID and sheet name then get data
var worksheet = SpreadsheetApp.openById(docDataSheetId).getSheetByName("Final Output");
var data = worksheet.getRange(2, 1, worksheet.getLastRow() - 1, 40).getValues();
//Get text from template file
var templateContent = docTemplate.getBody().getParagraphs();
//Merge data and content
docMerged.getBody().clear();
data.forEach(function(r) {
createMerge(r[0], r[1], r[3], r[4], docMerged, templateContent);
}
);
}
function createMerge(last, first, date, grade, docMerged, templateContent, worksheet) {
templateContent.forEach(function(p) {
var lineType = p.getType();
if (lineType == "PARAGRAPH") {
docMerged.getBody().appendParagraph(
p
.copy()
.replaceText("«last»", last)
.replaceText("«first»", first)
.replaceText("«date»", date)
.replaceText("«grade»", grade)
);
} else if (lineType == "LIST_ITEM") {
docMerged.getBody().appendListItem(
p
.copy()
.replaceText("«last»", last)
.replaceText("«first»", first)
.replaceText("«date»", date)
.replaceText("«grade»", grade)
).setGlyphType(DocumentApp.GlyphType.BULLET);
}
});
docMerged.getBody().appendPageBreak();
}