¿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.

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});
  }
}

@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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.