Как сохранить и грипп sh в Google Apps Script? - PullRequest
0 голосов
/ 25 января 2020

Я новичок в 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...