¿Cómo puedo aplicar un script a una sola hoja específica dentro de una hoja de cálculo?

9

Tengo una hoja de cálculo con dos hojas llamadas Robiny Lucy. He hecho / encontrado / destrozado un script para ordenar los datos en la hoja cada vez que agrego algunos datos a la columna A:

function onEdit(event){

  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 1;
  var tableRange = "a2:I30";
    if(editedCell.getColumn() == columnToSortBy){   
   var range = sheet.getRange(tableRange);
   range.sort( { column : columnToSortBy } );
  }
}

Este script funciona bien, pero sólo quiero que se puede aplicar en la primera hoja, Robin. Los datos en la segunda hoja Lucyno son los mismos, así que voy a crear otro script para un rango diferente para ese, una vez que entienda este problema.

Creo que necesito usar el getSheetByName("Robin")pero parece que no puedo hacer que funcione.

oohrogerplamer
fuente

Respuestas:

12

Hay un par de formas de hacerlo. Primero, debe declarar la hoja de cálculo:

var ss = SpreadsheetApp.getActiveSpreadsheet();  

En segundo lugar, declare la primera hoja así:

var sh0 = ss.getSheets()[0];

o así:

var sh0 = ss.getSheetByName("Robin");

Luego configure la celda activa y recupere el índice de columna:

var editedCell = sh0.getActiveRange().getColumnIndex();

Y haz la lógica para el tipo:

var columnToSortBy = 1;
var tableRange = "a2:I30";

if(editedCell == columnToSortBy){   
  var range = sheet.getRange(tableRange);
  range.sort( { column : columnToSortBy } );
}

Código completo, un poco acortado:

function onEdit(){
  var sh0 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var editedCell = sh0.getActiveRange().getColumnIndex();

  if(editedCell == 1) { 
    var range = sh0.getRange("A2:I30");
    range.sort({column: 1});
  }
}
Jacob Jan Tuinstra
fuente
@oohrogerplamer Puede aceptar la respuesta marcándolo, vea este FAQ área. De nada.
Jacob Jan Tuinstra
¿Cómo puedo hacer esto para ordenar por una columna, pero también ordenar las otras columnas para que todos los datos coincidan en las filas?
moobot