我在下面的链接中的Google表格中有一个员工培训数据库:
Google表单会使用员工信息填充“添加员工表单响应”表的A到J列。通过简单的单元格功能将该数据传输到“资格”表。问题是,我无法弄清楚原因是,当每个新表单完成并且表单答案填充“添加员工表单响应”表时,它将“资格”表下一个空行中的单元格号更改为下一个随后的行号,这些行号链接到“添加员工表单响应”工作表中的空白单元格。例如,在完成表单之前,“资格表”第4行中的所有单元格都是从“添加员工表单响应”表的第4行中绘制的,但是在填充表单之后,“资格表”的第4行是从第5行中绘制的“添加员工表单响应”表保持为空。
我以前在另一张纸之间有另一张具有查询功能的纸,效果很好,但此后我添加了以下应用程序脚本(“脚本编辑器”的第1至24行)以在输入日期时剪切行“资格”表的B列中,并将其粘贴到“资格-员工离职”表中。问题是查询仅从“添加员工表单响应”表中再次检索数据,并重新填充“资格”表。换句话说,刚刚从“资格”表中剪切并粘贴到“资格-剩余员工”表中的数据将通过查询从“添加员工表单响应”表返回到“资格”表。 / p>
// 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,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,numCols).setvalues(row);
sheet.deleteRow(editedRow);
sheet.hideColumns(column);
}
如果“资格”表和“添加员工表格回复”表之间的行编号问题有一个简单的解决方法,我将很高兴。否则,我认为可以解决的唯一方法是恢复Query函数,然后获取apps脚本以从“添加员工表单响应”表中删除数据。我将不胜感激任何建议。我真的希望一切都可以自动化,因为会有很多计算机文盲用户。