Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

391
Views
Hojas de cálculo de Google: ¿Cómo enumero filas de datos copiados de otra hoja de forma consecutiva, en orden y sin sobrescribir los datos actuales a través de secuencias de comandos?

Soy un poco nuevo en el trabajo con Hojas de cálculo de Google y me encontré con un problema al crear botones para un sistema de tickets. He tenido problemas para que los datos copiados llenen la otra hoja desde la segunda fila hacia abajo sin espacios ni sobrescribiendo los datos existentes.

El script básicamente verifica si una casilla de verificación de una determinada fila está marcada, copia los datos en esa fila, mueve esos datos a otra hoja y luego restablece esa fila a su estado original. Lo que significa que no elimina por completo la fila o el formato, sino que solo copia el contenido.

Aquí está el código con el que he estado trabajando hasta ahora:

 function MigrateInProgress() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName('Copy of New Tickets'); var s2 = ss.getSheetByName('In Progress'); var r = s.getRange('G:G'); var v = r.getValues(); var dataset = []; for(var i=v.length-1;i>=0;i--) if(v[0,i]=='true') { var data = s.getRange(i+1,1,1,6).getValues(); s2.getRange(i+1,s2.getLastColumn()-6,data.length,6).setValues(data); var datasetrange = s.getRange(i+1,1,1,6); datasetrange.clear({contentsOnly: true}); datasetrange.clear({formatOnly: false}); s.getRange(i+1,7).setValue(false); } }

Aquí hay algunas capturas de pantalla para ayudar a contextualizar lo que quiero decir:

Captura de pantalla 1

Captura de pantalla 2

Captura de pantalla 3

Cualquier ayuda sería muy apreciada. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que su objetivo es el siguiente.

  • Desea copiar las filas de las columnas "A" a "F" de la hoja de origen a la hoja de destino cuando la casilla de verificación de la columna "G" está marcada.
  • En ese momento, desea borrar las columnas "A" a "F" y desmarque la columna "G". Y desea copiar los valores en la hoja de destino sin incluir las filas vacías.

En este caso, ¿qué tal la siguiente modificación?

Guión modificado:

 function MigrateInProgress() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName('Copy of New Tickets'); var s2 = ss.getSheetByName('In Progress'); var v = s.getRange('A2:G' + s.getLastRow()).getValues(); var { values, clear, uncheck } = v.reduce((o, r, i) => { if (r[6] === true) { var row = i + 2; o.values.push(r.splice(0, 6)); o.clear.push(`A${row}:F${row}`); o.uncheck.push(`G${row}`); } return o; }, { values: [], clear: [], uncheck: [] }); console.log(values) if (values.length > 0) { s2.getRange(s2.getLastRow() + 1, 1, values.length, values[0].length).setValues(values); s.getRangeList(clear).clearContent(); s.getRangeList(uncheck).uncheck(); } }
  • En esta modificación, al principio, todos los valores se recuperan de la hoja de origen. Y cree los valores para copiar en la hoja de destino, y también cree la lista de rango para borrar las celdas y desmarcar las casillas de verificación.

  • Por cierto, los valores recuperados por getValues son una matriz bidimensional y, en este caso, la casilla de verificación devuelve el tipo boolea. Entonces, cuando quiera usar v[0,i]=='true' , puede usar v[i][0] === true .

Acerca de algunos puntos poco claros, supuse lo siguiente.

  • No pude entender si dónde desea colocar los valores cuando los valores se copian en la hoja de destino. Entonces, en esta modificación, los valores se agregan a la hoja de destino. Cuando no desee agregar los valores, modifique s2.getRange(s2.getLastRow() + 1, 1, values.length, values[0].length).setValues(values); a s2.getRange(2, 1, values.length, values[0].length).setValues(values); . Por esto, los valores siempre se ponen desde la fila 2.

Referencias:

  • reducir()
  • clearContent() de la clase RangeList
  • desmarque () de Class RangeList
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!