在使用具有剪切和粘贴功能的Apps脚本时,如何处理Google表单中的新数据?

问题描述 投票:0回答:1

我在下面的链接中的Google表格中有一个员工培训数据库:

Link to Google Spreadsheet

Google表单使用员工信息填充“添加员工表单响应”表的A到J列。通过简单的单元格功能将该数据传输到“资格”表。问题是,我无法弄清楚原因是,当每个新表单完成并且表单答案填充“添加员工表单响应”表时,它将“资格”表下一个空行中的单元格号更改为下一个随后的行号,这些行号链接到“添加员工表单响应”工作表中的空白单元格。例如,在完成表单之前,“资格表”第4行中的所有单元格都是从“添加员工表单响应”表的第4行中绘制的,但是在填充表单之后,“资格表”的第4行是从第5行中绘制的“添加员工表单响应”表保持为空。

我以前在另一张纸之间有另一张带有Query函数的纸,效果很好,但此后我添加了以下应用脚本(脚本编辑器的第1至24行),以在列中输入日期时剪切行B,然后将其粘贴到“资格-剩余员工”表中。问题是查询仅从“添加员工表单响应”表中再次检索数据,并重新填充“资格”表。换句话说,刚刚从“资格”表中剪切并粘贴到“资格-剩余员工”表中的数据将通过查询从“添加员工表单响应”表返回到“资格”表。] >


// Cut Employees Left from Qualifications sheet and 
// paste in Qualifications - Employees Left sheet
function onEdit(e) {
  var ss = e.source;
  var sheet = ss.getActiveSheet();
  var sheetName = "Qualifications"
  var range = e.range;
  var editedColumn = range.getColumn();
  var editedRow = range.getRow();
  var column = 2;
  var date = range.getValue();
  // Object.prototype.toString.call(date) === '[object Date]' --> checks if value is date
  // editedColumn == column && editedRow > 4 --> checks if edited cell is from 'Date Left'
  // sheet.getName() == sheetName --> checks if edited sheet is 'Qualifications'
  if(Object.prototype.toString.call(date) === '[object Date]' && editedColumn == column && editedRow > 4 && sheet.getName() == sheetName) {
    var numCols = sheet.getLastColumn();
    var row = sheet.getRange(editedRow, 1, 1, numCols).getValues();
    var destinationSheet = ss.getSheetByName("Qualifications - Employees Left");
    // Get first empty row:
    var emptyRow = destinationSheet.getLastRow() + 1;
    // Copy values from 'Qualifications'
    destinationSheet.getRange(emptyRow, 1, 1, numCols).setValues(row);
    sheet.deleteRow(editedRow);
    sheet.hideColumns(column);
  }

如果对“资格”表和“添加员工表格回复”表之间的行编号问题有一个简单的解决方法,我会很高兴。否则,我认为可以解决的唯一方法是恢复Query函数,然后获取apps脚本以从“添加员工表单响应”表中删除数据。我将不胜感激任何建议。我真的希望一切都自动化,因为会有很多计算机文盲用户。

我在Google表格中有一个员工培训数据库,位于下面的链接中:链接到Google Spreadsheet A Google表单使用员工信息填充“ Add Employee Form Responses”表中的A到J列。 ...

google-apps-script google-sheets google-form
1个回答
0
投票

[您正在寻找一种更好的方法来动态记录新员工,并在“资格”表上的“添加员工表单回复”表中得到通知。目前,您使用简单的公式,但不一定会自动选择新员工。

© www.soinside.com 2019 - 2024. All rights reserved.