脚本将行数据复制到另一张表,仅部分工作

时间:2019-05-10 01:40:04

标签: google-apps-script google-sheets

我有一个脚本可以在员工时间表电子表格中移动一行数据(感谢“表格” 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
  }
}

1 个答案:

答案 0 :(得分:0)

我相信这个var offset = colX - ((colX-2) % 5 ) // offset to the first column

应该是这个var offset = colX - ((colX+2) % 5 ) // offset to the first column

这是导致您找不到雇员的原因,因为雇员位于一个合并的单元格组中,​​该值始终将其值放在水平合并的最左侧单元格中。