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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在使用具有剪切和粘贴功能的Apps脚本时,如何处理Google表单中的新数据?相关的知识,希望对你有一定的参考价值。

我在下面的链接中的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列。 ...

答案

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

以上是关于在使用具有剪切和粘贴功能的Apps脚本时,如何处理Google表单中的新数据?的主要内容,如果未能解决你的问题,请参考以下文章

删除硬盘的文件,但是硬盘空间没有释放,怎么回事?如何处理?

Firebase云功能:如何处理持续请求

JavaScript中的内存泄漏以及如何处理

如何处理 javascript 文件具有它使用的图像的“相对”路径的情况?

如何处理bash脚本的waitkey功能中的长按按钮?

如何处理Expect脚本中passwd的错误?