我有一个脚本可以在员工时间表电子表格中移动一行数据(感谢“表格” Reddit的帮助),该脚本正在运行,但是已停止查找一部分数据。
此处的电子表格:https://docs.google.com/spreadsheets/d/10yLJ_NyFasGhlRt2LsXO2CC804Zf5JLvwUisgytQOhM/edit?usp=sharing
将“完成”列63设置为“是”后,它将复制数据(仅来自必需列),根据标记为“ x”的星期来定位员工的姓名,并将其移至“完成表”中。
该代码曾经可以正常使用,但是现在找不到“ x”或获取员工姓名。 随着我们拥有更多的员工,我不得不几次更新脚本中的列号,这很可能使我很头疼。
(任何空白列在我的真实电子表格中确实有数据,由于与脚本无关,在这里将其留空)
非常感谢任何建议!谢谢!
[电子表格中的完整代码]
if (ecol == 63 && ssh.getName() == 'SCHEDULE' && rng.getValue() == 'YES') { //if Schedule!63 is YES
var data = []; //output data
var rowN = rng.getRow();
var rowV = ssh.getRange(rowN,1,1,63).getDisplayValues();
var row = rowV[0]; //get edited row
var colX = row.indexOf('x')+1; //find X
var offset = colX - ((colX-2) % 5 ) // offset to the first column
var emp = ssh.getRange(1,offset).getValue(); //get employee name
var dd = Utilities.formatDate(new Date(), "GMT+10", "dd/MM/yyyy") //generate date finished
data.push(row[1],row[2],row[3],dd,row[5],emp); //get row
dsh.appendRow(data); //move row
ssh.deleteRow(e.range.rowStart); //delete from schedule
}
}
答案 0 :(得分:0)
我相信这个var offset = colX - ((colX-2) % 5 ) // offset to the first column
应该是这个var offset = colX - ((colX+2) % 5 ) // offset to the first column
这是导致您找不到雇员的原因,因为雇员位于一个合并的单元格组中,该值始终将其值放在水平合并的最左侧单元格中。