vincular una spreadsheets sincronizar sheets secuencia referencias que programar otras otra objetivo los importrange hojas hoja hacer google funcion entre datos cómo como comandos calculo buscar archivos aparezcan javascript google-spreadsheet google-apps-script

javascript - una - secuencia de comandos google sheets



¿Cómo copiar una fila de una hoja de cálculo de google a otra hoja de cálculo de google usando el script de Google Apps? (7)

Consulte la documentación aquí:

http://code.google.com/googleapps/appsscript/service_spreadsheet.html

Supongamos que está trabajando en la hoja de cálculo desde donde está copiando.

Tendría que obtener un control de la hoja de cálculo actual y la hoja de cálculo de destino. Deberá obtener la identificación para la hoja de cálculo de destino. Los detalles están en el enlace allí arriba.

var ss = SpreadsheetApp.getActiveSpreadsheet(); var target = SpreadsheetApp.openById("abc1234567");

A continuación, debemos elegir las hojas particulares dentro de esas hojas de cálculo. Supongamos que su fila está en la hoja llamada "Cosas nuevas" y tiene una hoja en la hoja de cálculo de destino denominada "Archivo".

var source_sheet = ss.getSheetByName("New Stuff"); var target_sheet = target.getSheetByName("Archive");

Ahora, el concepto que utilizan las hojas de cálculo de Google Apps son los rangos. Un rango es solo un trozo de celdas. Entonces, necesitamos determinar el rango y el rango. Digamos que su hoja tiene 7 columnas y desea la 10ma fila.

var source_range = source_sheet.getRange("A10:G10"); var target_range = target_sheet.getRange("A1:G1");

Así que vamos a tomar esa fila y ponerla en la primera fila de la hoja de destino. Ahora para la copia real:

source_range.copyTo(target_range);

¡Y tu estas listo!

Ahora, esto siempre golpeará la primera fila de la hoja de destino. Hay mucho que puedes hacer para detener eso. En lugar de usar siempre la primera línea, puede usar los métodos del objeto hoja para encontrar la última fila, agregar una después y luego usarla como su rango.

var last_row = target_sheet.getLastRow(); target_sheet.insertRowAfter(last_row); var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));

De esta forma, cada vez que copias una fila, simplemente se agrega al final de la hoja.

Hola, quería copiar una fila en particular de una hoja de cálculo a otra hoja de cálculo con el script de google apps. ¿Alguien puede ayudarme a obtener la respuesta para esto?


Esto no funciona - devuelve un error "El rango objetivo y el rango fuente deben estar en la misma hoja de cálculo". Parece que tenemos que hacer algo similar a esto:

function copyRow_ (origSheetName, destSheetName, origRowNumber, destRowNumber) { var origSheetObject = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(origSheetName); var destSheetObject = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(destSheetName); var origLastCol = origSheetObject.getLastColumn(); var arrOrigData = origSheetObject.getRange(origRowNumber, 1, 1, origLastCol).getValues(); var destlastRow = destSheetObject.getLastRow() + 1; if (destRowNumber) destlastRow = destRowNumber; var cont; for (cont = 0; cont < origLastCol; cont++) destSheetObject.getRange(destlastRow, 1+cont).setValue(arrOrigData[0][cont]); }

(descaradamente robado de aquí )


el método copyTo está poco documentado porque no le permite copiar contenidos de una hoja a una hoja en otra hoja de cálculo. Querrá utilizar los valores de consigna getvalues ​​ans como a continuación:

function CopyDataToNewFile() { var sss = SpreadsheetApp.openById(''0AjN7uZG....''); // sss = source spreadsheet var ss = sss.getSheetByName(''Monthly''); // ss = source sheet //Get full range of data var SRange = ss.getDataRange(); //get A1 notation identifying the range var A1Range = SRange.getA1Notation(); //get the data values in range var SData = SRange.getValues(); var tss = SpreadsheetApp.openById(''8AjN7u....''); // tss = target spreadsheet var ts = tss.getSheetByName(''RAWData''); // ts = target sheet //set the target range to the values of the source data ts.getRange(A1Range).setValues(SData); }


Tal vez esta publicación te ayude http://l.rw.rw/gscripts3 . Describe la funcionalidad de la función de copia con diferentes condiciones (límites de datos por rango, filtros personalizados, datos de lugares para orientar con métodos de inserción o reemplazo). Y tiene un ejemplo de trabajo donde puedes probarlo.


Otra forma de hacerlo sería importar la fila (o cualquier rango) desde la fuente a la hoja de cálculo de destino.

Suponiendo que desea importar la fila 3 de la hoja de la hoja de cálculo de origen llamada "fuente-hoja de cálculo-hoja-nombre", coloque en la primera columna de la ubicación de destino la siguiente fórmula:

=IMPORTRANGE("source-spreadsheet-key","source-spreadsheet-sheet-name!3:3")

donde "source-spreadsheet-key" es la identificación unque de la hoja de cálculo fuente que extrae de su URL.

Si lo haces por primera vez, aparecerá el mensaje de seguridad:

Simplemente confirme y toda la fila se completará automáticamente.

Recuerde que, en ocasiones, lleva un par de minutos actualizar las celdas importadas después de realizar cambios en el área de origen. Sin embargo, puede acelerarlo presionando ctrl-E o ctrl-shift-E , mientras está en la hoja de cálculo de destino, lo que funcione.


Use range.setValues, es la mejor opción. Funciona para cualquier rango en cualquier hoja, en la medida en que el rango de origen y destino sea similar.

Aquí hay un código de muestra:

function openCSV() { //Buscamos el archivo var files = DriveApp.getFilesByName("ts.csv"); //Cada nombre de archivo es unico, por eso next() lo devuelve. var file = files.next(); fileID = file.getId(); //Abrimos la spreadsheet, seleccionamos la hoja var spreadsheet = SpreadsheetApp.openById(fileID); var sheet = spreadsheet.getSheets()[0]; //Seleccionamos el rango var range = sheet.getRange("A1:F1"); values = range.getValues(); //Guardamos un log del rango //Logger.log(values); //Seleccionamos la hoja de destino, que es la activeSheet var ss = SpreadsheetApp.getActiveSpreadsheet(); var SSsheet = ss.getSheets()[0]; //Seleccionamos el mismo rango y le asignamos los valores var ssRange = SSsheet.getRange("A1:F1"); ssRange.setValues(values); }


Me encontré con esto también. Me las arreglé para encontrar una buena solución que copia todo de una hoja a otra (a excepción de imágenes, gráficos, scripts y demás). Copia fórmulas, valores, formateo seguro.

Básicamente, la solución es

  • copie la hoja de origen en la hoja de cálculo de destino como una hoja de fuente de temperatura
  • copie los datos de la hoja de fuentes de temperatura a la hoja de destino
  • eliminar la hoja fuente de la temperatura

Código:

var sss = SpreadsheetApp.openById(spreadsheet); // sss = source spreadsheet var ss = sss.getSheetByName(sheet); // ss = source sheet var ss_temp = ss.copyTo(targetsheet); var tss = SpreadsheetApp.openById(spreadsheet); // tss = target spreadsheet var ts = tss.getSheetByName(sheet); // ts = target sheet var range2Copy = ss_temp.getRange(range); range2Copy.copyTo(ts.getRange(range)); bss.setActiveSheet(ss_temp); bss.deleteActiveSheet()

En base a lo anterior, creé una hoja de cálculo que me permite actualizar muchas copias de una hoja de cálculo maestra. Con alrededor de 15 copias, ahorra una gran cantidad de acciones de copiar y pegar.