Hojas de cálculo de Google (aplicación-script) que copian una fila de información a otra hoja de cálculo

Necesito, si se ingresa cualquier información en la columna 5, copiar esa fila de datos a otra hoja de cálculo. El primero si () en mi función es para otra cosa, ordena los datos cuando se ingresa cualquier información en la columna 4, que funciona, pero necesito que el otro si () funcione, pero no lo hace, he mirado otras preguntas, pero no puedo encontrar una respuesta que funcione en mi situación.

function onEdit(event) {
  var sheet=event.source.getActiveSheet();
  var editedCell=sheet.getActiveCell();
  var columnToSortBy=4;
  var columnToArchive=5;
  var tableRange= "A2:F!";

  if(editedCell.getColumn() == columnToSortBy){
    var range=sheet.getRange(tableRange);
    range.sort( {column : columnToSortBy} );
  }
  else{
    if(editedCell.getColumn() == columnToArchive){
      var rowToBeMoved=editedCell.getRow();
      var rangeToBeMoved=sheet.getRange("A" + rowToBeMoved + ":F" + rowToBeMoved);
      var values=rangeToBeMoved.getValues();
      var archiveSpreadSheet=SpreadsheetApp.openById("0AroBvchobu2edHNXQ3ZUQjI5TWJtWWZwa1UtcExPNnc");
      var archiveSheet=archiveSpreadSheet.getSheetByName("archive");
      archiveSheet.appendRow(values);
    }
  }
}

He identificado que el problema es con las últimas tres líneas dentro del segundo bloque if. Parece que después de la línea "var values ​​= rangeToBeMoved.getValues ​​();", el script deja de ejecutarse porque si a puse un Browser.msgBox ("hi") después de esa línea o en cualquier lugar antes, aparece ese mensaje, pero si Ponlo después de la siguiente línea, no aparece. El problema es con el .openById ()? ¡AYUDA!

Respuestas a la pregunta(1)

Su respuesta a la pregunta