У меня есть приложения, добавляемые в электронную таблицу Google. По сути, я пытаюсь отправить слияние каждого приложения (строки) на страницу в длинном документе Google, который я могу читать через приложения. Итак, я пытаюсь написать сценарий Google, который 1. извлекает каждую строку из электронной таблицы ответов формы, 2. копирует шаблон документа, 3. вставляет шаблон во вновь созданный документ и 4. заменяет текст шаблона на форма ответа.
Вместо того, чтобы создавать отдельный документ для каждого приложения, я надеюсь просто добавить разрыв страницы после замены текста из предыдущей строки, а затем снова скопировать шаблон. Таким образом, код просто перебирает все строки в электронной таблице, и мне нужно открыть только один документ, чтобы прочитать приложения.
Вот код, с которым я работал. Я использовал множество руководств, чтобы добраться до этого момента, но я не могу понять, как правильно перебирать строки / абзацы. Последняя итерация моего кода привела к появлению всех имен на первой странице, затем идентификатора, затем электронной почты. Скорее, чем вся информация одного человека на первой странице. Итак, я внес больше изменений, и теперь во вновь созданном документе Google ничего не отображается.
У меня проблемы с вложенной функцией updateDoc (). Все остальное вроде работает нормально. Циклы foreach и for - это то, что меня сбивает. Массив внутри массива - это не то, с чем я работал до этого проекта. (См. Строки 4 и 5 функции updateDoc ())
function AutoFill() {
// Global variables
var templateFile = DocumentApp.openById('theID');
var newDoc = DocumentApp.create('CopyOf'+ templateFile.getName());
var copyTemplate = templateFile.getBody().getParagraphs();
newDoc.getBody().clear();
var sourceFileId = newDoc.getId();
var targetFolderId = 'thisID';
// Pull the data from spreadsheet
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
Logger.log('data pulled');
data.forEach(function(r){
updateDoc(data, copyTemplate, newDoc);
});
moveFiles(sourceFileId, targetFolderId);
Logger.log('File Moved');
// move newDoc to 'Populated Applications' Folder
function moveFiles(sourceFileId, targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
var folder = DriveApp.getFolderById(targetFolderId);
file.moveTo(folder);
}
// Update the doc w/ data from spreadsheet
function updateDoc(data, copyTemplate, newDoc) {
var rows = data.length;
var cols = data[0].length;
var rowNumber = 1;
copyTemplate.forEach(function(p){
for (var a=1; a < rows; a++){
newDoc.getBody().appendParagraph(
p
.copy()
.replaceText('{{name}}', data[a][2])
.replaceText('{{ccaId}}', data[a][3])
.replaceText('{{email}}', data[a][1])
.replaceText('{{academicProgram}}', data[a][4])
.replaceText('{{year}}', data[a][5])
.replaceText('{{positions}}', data[a][6])
.replaceText('{{Response1}}', data[a][7])
.replaceText('{{Response2}}', data[a][8])
.replaceText('{{Response3}}', data[a][9])
.replaceText('{{Response4}}', data[a][10]));
Logger.log(a + 'page completed');
};
newDoc.getBody().appendPageBreak();
});
}
}
data
и образец документа шаблонаtemplateFile
? - person Tanaike   schedule 25.05.2021