当前位置: 首页 > 知识库问答 >
问题:

基于表单提交创建具有名称的新工作表

羊舌和安
2023-03-14

在谷歌表单中,我有一个脚本,用于为提交的每个谷歌表单创建一个新表单。它应该基于最后一列G列(不是表单提交列)创建一个名为的新工作表。然后,它从最后一行和标题行获取信息,并将其复制到所创建工作表的前两行。它还将公式添加到单元格中,以将信息放入列中(转置),并根据创建的工作表对其进行格式化。

现在它正在创建工作表并复制公式和格式,但没有给它正确的名称或提取最后一行信息。

请帮忙~查尔斯

我复制了以下代码:

function onFormSubmit() {
  // onFormSubmit
  // get submitted data
  var ss = SpreadsheetApp.openById(
    '...');
  var sheet = ss.getSheetByName("Responses");
  var headings = sheet.getRange(1,1,1,
sheet.getLastColumn()).getValues();
  var lastRow = sheet.getRange(sheet.getLastRow(),1,1,
sheet.getLastColumn()).getValues();
  var studentUsername = lastRow[0][6];
  // check if username has sheet
  if(ss.getSheetByName(studentUsername)){
    var userSheet = ss.getSheetByName(studentUsername);
    // if not make
  } else {
   var userSheet = ss.insertSheet(studentUsername);
    userSheet.getRange(1,1,1,
headings[0].length).setValues(headings);
  }
  // copy submitted data to user's sheet
  userSheet.appendRow([lastRow]);
  userSheet.appendRow(['=CONCATENATE(B6," ",B5)']);
  userSheet.appendRow(['=TRANSPOSE(B1:2)']);
  userSheet.hideRows(1,2);
  userSheet.setColumnWidth(1, 500);
  userSheet.setColumnWidth(2, 500);
  var FormatSheet = ss.getSheetByName("Format");
  var FormatRange = FormatSheet.getRange("a3:b28");
  FormatRange.copyFormatToRange(userSheet,1,3,3,28);
}

共有1个答案

龙高歌
2023-03-14

在评论和游戏的帮助下,我找到了我需要的代码。非常感谢@Cooper!

这是:

function onFormSubmit() {
  // onFormSubmit
  // get submitted data
  var ss = SpreadsheetApp.openById(
    'Sheet_ID');
  var sheet = ss.getSheetByName("Responses");
  var row = sheet.getLastRow();
  var Col = sheet.getLastColumn();
  var headings = sheet.getRange(1,1,1,
Col).getValues();
  var lastRow = sheet.getRange(row, 1, 1, Col);
  var studentUsername = sheet.getRange(row, Col).getValue();
  // check if username has sheet
  if(ss.getSheetByName(studentUsername)){
    var userSheet = ss.getSheetByName(studentUsername);
    // if not make
  } else {
   var userSheet = ss.insertSheet(studentUsername);
    userSheet.getRange(1,1,1,
headings[0].length).setValues(headings);
  }
  // copy submitted data to user's sheet
  userSheet.appendRow(lastRow.getValues()[0]);
  userSheet.appendRow(['=CONCATENATE(B6," ",B5)']);
  userSheet.appendRow(['=TRANSPOSE(B1:2)']);
  userSheet.hideRows(1,2);
  userSheet.setColumnWidth(1, 500);
  userSheet.setColumnWidth(2, 500);
  var FormatSheet = ss.getSheetByName("Format");
  var FormatRange = FormatSheet.getRange("a3:b28");
  FormatRange.copyFormatToRange(userSheet,1,3,3,28);
}
 类似资料: