У меня есть один лист (Sheet1), который я считаю шаблоном. В нем есть заголовок с полями, такими как "Имя ученика", "Родитель" и "Номер телефона", которые являются личной информацией. Ниже есть другие вещи, которые не имеют отношения к этому вопросу.

Идея состоит в том, чтобы на другом листе (Лист 2) были перечислены ученики, а затем другая информация в других столбцах. Оттуда я хотел бы автоматически создать несколько листов, по одному для каждого учащегося, на основе шаблона, где заголовки будут автоматически заполняться на основе Sheet2.

У меня нулевой опыт работы с электронными таблицами, поэтому я даже не знаю, возможно ли это. Я пробовал поискать в Google, но я не знаю терминологию, поэтому мне трудно понять это. Любая помощь приветствуется. Большое спасибо.

1 ответ1

0

В итоге мне пришлось программировать скрипт на Google Apps Script

Сценарий создает пункт меню с именем Gerar Planili, который при нажатии создает еще одну электронную таблицу в папке Google Drive и добавляет один новый лист для каждой строки на листе Lista. Он копирует шаблон листа, а затем копирует каждое соответствующее поле по желанию. Вот код:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "Gerar planilhas", functionName: "gerarPlanilhas"}
  ];
  ss.addMenu("Pagamento Alunos", menuEntries);
}

function gerarPlanilhas() {
  var sheetTemplate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Template');
  var sheetLista = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Lista');
  var ssGerada = SpreadsheetApp.create("Planilhas Alunos");

  var tamanhoLista = sheetLista.getLastRow();
  var indice = 1;

  while (indice <= tamanhoLista) {    
    var nomeAluno = sheetLista.getRange(indice, 1).getValue()
    var nomeResp = sheetLista.getRange(indice, 2).getValue()
    var CPF = sheetLista.getRange(indice, 3).getValue()
    var telefone = sheetLista.getRange(indice, 4).getValue()
    values = [[indice], [nomeAluno], [nomeResp], [CPF], [telefone]]

    var newSheet = sheetTemplate.copyTo(ssGerada)
    newSheet.setName("Aluno" + indice)
    var range = newSheet.getRange(1, 2, 5, 1).setValues(values)

    indice = indice + 1;
  }

  ssGerada.deleteSheet(ssGerada.getSheetByName("Sheet1"))
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .