如何在 Google Sheets 上自动创建多张工作表?

如何在 Google Sheets 上自动创建多张工作表?

我有一张工作表 (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"))
}

相关内容