在Google表格中移动行

时间:2018-01-30 17:58:43

标签: javascript function google-sheets

我的任务是纠正我们团队在Google表格中使用的大量功能。创作者没有留下任何笔记,也不再与公司合作。我试图纠正的最后一个问题是在前几天让我开了一个循环,我需要第二双眼睛来帮助确定发生了什么。

示例文件:

Generic Test File Found Here

目的:

我们的经理通过跟踪器跟踪他们的内部质量检查(QC)项目,用户将“提交”他们的工作以供另一个人审核。该过程涉及“对等”和“最终”质量控制。为了帮助我们更好地跟踪QC中的项目,并审核团队和个人的准确性,我们创建了一个类似于上面引用的表格的Google表格。

代码:

function moveRow(rowNum, fromSheet, toSheet) {
      var tolastRow = toSheet.getLastRow() + 1;
  var rowData = fromSheet.getRange(rowNum, 1, 1, 14);
      rowData.copyTo(toSheet.getRange(tolastRow, 1, 1, 14), {contentsOnly: true});
      fromSheet.deleteRow(rowNum);
  var fromlastRow = fromSheet.getLastRow();
      fromSheet.insertRowBefore(fromlastRow+1);
      fromSheet.getRange(fromlastRow+2, 1, 1, 14).copyTo(fromSheet.getRange(fromlastRow+1, 1, 1, 14));
  return tolastRow

}

function checkSheets() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var peerSheets = ss.getSheetByName('Peer');
  var finalSheets = ss.getSheetByName('Final');
  var com = ss.getSheetByName('Complete');
  var timeZone = Session.getScriptTimeZone();
  var date = new Date();
  var d = Utilities.formatDate(date, timeZone, 'MM/dd/yy')

  for(i=0; i<peerSheets.length; i++){
    var status = peerSheets[i].getRange("F:F").getValues();
    var lastStatus = status.filter(String).length;
    for(k=2; k<=lastStatus; k++){
      if(peerSheets[i].getRange(k, 6).getValue() == 'Submit to Final') {
        var lastRow = moveRow(k, peerSheets[i], finalSheets[i]);
        finalSheets[i].getRange(lastRow, 6).setValue('New');
        finalSheets[i].getRange(lastRow,14).setValue(finalSheets[i].getRange(lastRow, 2).getValue());
        finalSheets[i].getRange(lastRow, 2).clearContent();
        k = k-1;
      }
    }
    for(k=2; k<=finalSheets[i].getLastRow(); k++){
      if(finalSheets[i].getRange(k, 6).getValue() == 'Complete'){
        var lastRow = moveRow(k, finalSheets[i],com);
        com.getRange(lastRow, 15).setValue(d);
        k = k-1;
      }
    }
  }
}

期望:

当一个人完成他们的工作时,他们将在Peer / Final选项卡中的F列中标记单元格,这将触发将该行移动到下一个相应选项卡的功能(按照Peer&gt; Final&gt;顺序;完成)。

错误:

我收到一个:“TypeError:无法调用方法”getLastRow“未定义。(第2行)”当我去运行脚本时脚本编辑器出错。

如何更正此错误并使此功能正常工作?

0 个答案:

没有答案