usar tutorial sheets scripts script hoja google funciones funcion como caracteristicas calculo apps app google-apps-script google-spreadsheet named-ranges

google-apps-script - tutorial - google drive hoja de calculo caracteristicas



getRange con el nombre del rango de hoja de cálculo de google usando scripts (1)

¿ getRange puede usar getRange para tener un rango con nombre en lugar de un área?
Cuando parece que lo hago, dice que el argumento debe ser un rango. Por ejemplo,

En lugar de:

getRange("A4:E7");

El área de A4:E7 se ha convertido en un rango con nombre llamado ''Nombres'' en la hoja 1.

¿Podrías quizás usar:

var tableRange = SpreadsheetApp.getActiveSpreadsheet();.getRangeByName("Names"); getRange(tableRange);

O hay otra forma de hacerlo? El código completo es:

function onEdit(event){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var editedCell = ss.getActiveCell(); var columnToSortBy = 1; var tableRange = ss.getRangeByName("Names"); if(editedCell.getColumn() == columnToSortBy){ var range = ss.getRange(tableRange); range.sort( { column : columnToSortBy } ); } }


https://developers.google.com/apps-script/class_spreadsheet#getRangeByName

Función personalizada que devuelve la dirección A1 del rango con nombre:

function myGetRangeByName(n) { // just a wrapper return SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n).getA1Notation(); }

Luego, en una celda en la hoja de cálculo:

=myGetRangeByName("Names")

Esto pondría cualquier "Nombre" definido en la celda. NO se actualizará cuando redefina "Names", debido al almacenamiento en caché agresivo de GAS. Sin embargo, puede forzar a GAS a actualizarlo en cada cálculo de hoja.

=myGetRangeByName("Names",now())

El javascript ignorará el parámetro no utilizado.

El siguiente código hace lo que creo que tiene la intención. Cuando se edita la primera columna de la hoja, ordena el rango en función de esa columna.

function onEdit(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var editedCell = ss.getActiveCell(); var columnToSortBy = 1; var tableRange = ss.getRangeByName("Names"); if ( editedCell.getColumn() == columnToSortBy ) { tableRange.sort(columnToSortBy); } }

Esto NO funcionará si quita la lista de la columna A, porque getColumn() devuelve la columna absoluta, no la ubicación de la celda en el rango. Tendría que agregar código para ajustarse a eso.