tutorial sheets scripts script openbyurl macro google español ejemplos docs developer apps app active google-apps-script google-spreadsheet

google-apps-script - sheets - google spreadsheet macro



Google Apps Script: ¿cómo obtener la hoja activa actual en mi script? (5)

Estoy usando este código para usar datos en Google Apps Script:

function getCurrentRow() { var currentRow = SpreadsheetApp.getActiveSheet().getActiveSelection().getRowIndex(); return currentRow; }

Pero cuando uso otra hoja que no sea la primera (número "gid = 0"), mi función sigue obteniendo datos de esa primera hoja y no de mi hoja activa actual. Como estoy usando el método .getActiveSheet() ¿cómo puedo solucionarlo?

PD: No estoy llamando al código de una celda. Estoy usando este código: http://opensourcehacker.com/2013/01/21/script-for-generating-google-documents-from-google-spreadsheet-data-source/


¿Usas tu función como una fórmula?

Tal vez no estoy entendiendo bien el caso, pero al usar tu código como fórmula, funciona como se esperaba.

En Sheet1 (Active) aplique la fórmula:

Luego, cambie manualmente la Sheet2 (Activa) y aplique la fórmula nuevamente:


Creé desde cero una hoja de cálculo completamente nueva, dentro de la cual creé algunas pestañas / hojas con algunos datos dentro de cada una; y luego en el script de google apps en esa hoja de cálculo instalé el siguiente código:

function getCurrentRow() { var currentSelection = SpreadsheetApp.getActiveSheet().getActiveSelection() var currentValue = currentSelection.getValue(); var currentRow = currentSelection.getRowIndex(); Logger.log(currentValue); Logger.log(currentRow); return currentRow; }

Ejecuté el script y me dio los resultados correctos para la hoja que estaba abierta / qué celda fue seleccionada. Entonces diría que este código funciona bastante como usted espera.

En su caso, le sugiero que la forma más rápida de obtener más información sobre el error, o para ver si el error persiste, es comenzar nuevamente desde cero con una nueva hoja de cálculo, pegar el código anterior y luego probarlo para demostrar que al menos eso también funciona para ti. Luego, solo después de esto, pega el código más grande (al que te has vinculado), y mira si aún funciona / deja de funcionar.


Es porque lo está llamando desde una función personalizada en una celda. No puedes hacer eso porque las funciones personalizadas deben ser deterministas. La respuesta de wchiquito funciona porque está usando una celda diferente para probar el segundo caso. Si usa la misma celda, mostrará el resultado anterior en caché. Busque los problemas relacionados con las funciones deterministas. He provisto workarrounds en esos (básicamente pasa un segundo param = now ()


Estoy teniendo el mismo problema al desarrollar en el Editor de scripts: la ventana / instancia del Editor de scripts se desconecta de la ventana / instancia de Hojas de cálculo y solo tiene la primera hoja / A1, etc. como ''activos''.

Lo que funcionó para mí:

Cierre la ventana Editor de scripts y vuelva a abrir desde Hoja> Herramientas> Editor de scripts. Voila, .getActive...()s están trabajando de nuevo.

También:

Como implican algunas de las otras respuestas, activar la ejecución desde la ventana / instancia de Sheets (probablemente siempre) también funciona. Una de las respuestas llama a una función desde una celda, lo que significa que va a ser activada por la Hoja. Otra opción sería agregar un menú .UI y una opción de menú y activarlo allí.


crea una hoja de cálculo en Google Drive y guárdala. En la hoja de cálculo, vaya al menú de herramientas y al editor de scripts y escriba la función.