我有一张工作表 (Sheet1),我将其视为模板。其中有一个标题,其中包含“学生姓名”、“家长”和“电话号码”等字段,这些都是个人信息。下面是与此问题无关的其他内容。
想法是让另一张工作表 (Sheet2) 列出学生,然后在其他列中列出其他信息。从那里,我想根据模板自动创建多个工作表,每个学生一个,其中标题将根据 Sheet2 自动填充。
我对电子表格毫无经验,所以我甚至不知道这是否可行。我试过谷歌搜索,但我不知道术语,所以我很难弄清楚。任何帮助我都感激不尽。非常感谢。
答案1
我最终不得不在 Google Apps Script 上编写一个脚本
该脚本创建了一个名为 Gerar Planilihas 的菜单项,单击该菜单项会在 Google Drive 文件夹中创建另一个电子表格,并为 Lista 工作表上的每一行添加一个新工作表。它会复制工作表 Template,然后根据需要复制每个相应的字段。代码如下:
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"))
}