Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

401
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda