编写脚本以在数据输入后自动创建新的Google工作表

时间:2019-05-28 18:45:01

标签: google-apps-script google-sheets

我目前有一个Google表格,可以通过第三方提交的表单接收数据。我正在尝试编写一个脚本,每次提交唯一的UserID时都会创建一个新工作表。

例如,如果我有5个用户ID为A,B,B,C,C的提交,我试图让脚本为A,B和C创建一个唯一的工作表,并在其中将重复的UserID提交分组片。我认为为用户ID过滤的数据透视表可以完成其中的后半部分,但我仍无法弄清工作表的创建是否可以对其进行测试。

到目前为止,这是我一直在使用的代码:

function formSheet(e) {
  var sheetName = e.namedValues['user-id'][0];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
if (!sheet) {
  sheet = ss.insertSheet(sheetName);
  var formSheet = e.range.getSheet();
  var headers = formSheet.getRange(1, 1, 1, formSheet.getLastColumn());
  headers.copyTo(sheet.getRange(1, 1));
}
sheet.appendRow(e.values);
}`

作为参考,带有数据的工作表标题为“提交”,而我想要的数据位于第2列的标题“ User-Id”下

1 个答案:

答案 0 :(得分:0)

尝试一下:

您在脚本中使用了“用户ID”,在问题中使用了“用户ID”,这是哪个?

function formsheet(e) {
  Logger.log(JSON.stringify(e));
  var ss=SpreadsheetApp.openById('ssid');
  var name=e.namedValues['user-Id'][0];
  var shts=ss.getSheets();
  if(shts.indexOf(name)==-1) {
    var sh=ss.insertSheet(name);
    var hdrs=e.range.getSheet().getRange(1,1,1,e.range.getSheet().getLastColumn()).getValues()[0];
    sh.appendRow(hdrs);
  }else{
      var sh=ss.getSheetByName(name);
  }
  sh.appendRow(e.values)  
}