values sheet script google getvalue getrange getdisplayvalues getcurrentcell google-apps-script google-spreadsheet

google-apps-script - getvalue - google spreadsheet script get cell value



Script de Google Spreadsheets, copyTo vs copyValuesToRanges & copyFormatsToRanges (1)

Pero puede usar copyTo para copiar a un destino "ancho", no es necesario hacer un bucle. p.ej

function copyTo() { var s = SpreadsheetApp.getActiveSheet(); s.getRange(''A2:D2'').copyTo(s.getRange(''A3:D10'')); }

Acabo de probarlo y funciona normalmente.

Pero si desea que las funciones funcionen, debe usar el par getFormulasR1C1 y setFormulasR1C1 . Otro problema que puede surgir al establecer las fórmulas después de establecer los valores es que tendrá que omitir la celda de "valores puros", o las sobrescribirá con fórmulas en blanco. Usar copyTo parece ser el mejor enfoque.

Necesito copiar una fila de plantilla a un nuevo rango.

La celda de la plantilla tiene contenidos donde el formato, los valores y las funciones pueden estar presentes.

Como estaba copiando una fila en un rango de varias filas, las funciones copyValuesToRange () y copyFormatsToRange () se veían bien.

Esencialmente, mi código fue un poco así;

Template.copyFormatToRange(sheet, 1, lastColumn, lastRow + 1, lastRow + N); Template.copyValuesToRange(sheet, 1, lastColumn, lastRow + 1, lastRow + N);

Esto copia la fila de mi plantilla en N nuevas filas comenzando en lastRow + 1.

Entonces noté que no estaba copiando las funciones en la fila de la plantilla, por ej. = SUMA (B2: C2)

Puedo obtener Functions () para obtener una matriz que contiene las funciones en mi fila de plantilla y setFunctions () para copiarlas en un ROW objetivo. Un inconveniente es que tengo que cambiar a la notación A1, que agrega tiempo de ejecución al script. Es importante destacar que el rango objetivo al que setFunctions () escribe debe ser del mismo tamaño que la matriz. Esto significa que tengo que ejecutar un ciclo for para copiar las funciones en N filas.

Si estoy ejecutando un bucle for de todos modos, solo puedo usar

  • para loop copyTo ()

    en lugar de

  • copyFormatToRange
  • copyValuesToRange
  • para el bucle para establecer las funciones

Estaba tratando de evitar el uso de copyTo () porque pensé que para N de cierto tamaño los comandos individuales copiaban ***** ToRange sería más eficiente que un ciclo for. ¿Estoy atascado con el bucle for o hay alguna manera inteligente de copiar las funciones de una fila simple a un rango de filas?