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

271
Visualizações
Usando dos funciones onEdit () en la misma hoja de trabajo (Hojas de cálculo de Google)

Todavía soy un novato en la codificación y las secuencias de comandos y agradeceré cualquier ayuda al respecto. Estoy trabajando en una tarea en la que básicamente necesito 2 funciones onEdit para ejecutar en la misma hoja de Google y mover filas a la pestaña correspondiente cuando cambia el estado (campo de columna) de un registro:

Meta:

1ra Función: Cuando el estado de una consulta cambia a "Resuelta", mueve todo el registro a la pestaña de la hoja llamada "Completada"

2da función: cuando el estado de una consulta cambia a "En espera" o "En espera de comentarios", mueve todo el registro a una pestaña separada en la hoja llamada "En espera / En espera de comentarios"

Ambas funciones onEdit () funcionan de forma independiente, sin embargo, cuando intento combinar las dos, solo funciona la segunda función onEdit2 (evento) . Intenté buscar una solución en línea, pero no he tenido éxito en hacer que ambas funciones funcionen cuando los estados de un registro cambian según lo especificado. Agradecería alguna orientación y ayuda con esto por favor

Mi código

 function onEdit(event) { // assumes source data in sheet named Needed // target sheet of move to named Acquired // test column with yes/no is col 4 or D var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "General Maintenance" && r.getColumn() == 9 && r.getValue() == "Resolved") { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("Completed"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } } function onEdit2(event) { // assumes source data in sheet named Needed // target sheet of move to named Acquired // test column with yes/no is col 4 or D var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "General Maintenance" && r.getColumn() == 9 && r.getValue() == "On Hold" || s.getName() == "General Maintenance" && r.getColumn() == 9 && r.getValue() == "Waiting On Feedback" ) { var row = r.getRow(); var numColumns = s.getLastColumn(); var targetSheet = ss.getSheetByName("On Hold / Awaiting Feedback"); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Hay dos formas de hacer esto: si realmente desea dos funciones separadas, puede crear una función onEdit y llamar a cada una de ellas por separado.

Sin embargo, gran parte de su código dentro de las dos funciones es el mismo. Hay un principio de codificación llamado DRY: significa Don't Repeat Yourself. No es necesario tener el mismo código en dos lugares separados, cuando puedes tenerlo en uno solo. Puede reducir la codificación duplicada combinando su código en una declaración if anidada, usando las partes de su declaración IF que eran iguales, como esta:

 function onEdit(event) { // assumes source data in sheet named Needed // target sheet of move to named Acquired // test column with yes/no is col 4 or D var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveSheet(); var r = event.source.getActiveRange(); if(s.getName() == "General Maintenance" && r.getColumn() == 9) { var keepProcessing = false; var targetSheet; if (r.getValue() == "Resolved") { keepProcessing = true; targetSheet = ss.getSheetByName("Completed"); } else if ((r.getValue() == "On Hold") || (r.getValue() == "Waiting On Feedback")) { keepProcessing = true; targetSheet = ss.getSheetByName("On Hold / Awaiting Feedback"); } // If 'Resolved', 'On Hold', or 'Waiting on Feedback', then keepProcessing was set to true, so can process the items if (keepProcessing) { // This was the code that was the same in both functions - The only difference now is that targetSheet is set above in the IF statement. // So this way, it is only typed out once instead of twice. var row = r.getRow(); var numColumns = s.getLastColumn(); var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); s.getRange(row, 1, 1, numColumns).moveTo(target); s.deleteRow(row); } } }
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