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

355
Visualizações
¿Por qué no aparece este mensaje de error en Hojas de cálculo?

Tengo una secuencia de comandos que se ejecuta en base a la edición y su disparador es instalable. Cuando se ejecuta, copia una fila en otro archivo. Me gustaría que apareciera un mensaje de error en caso de que no se haya realizado por algún motivo, para que el usuario sepa que requiere atención adicional.

En este momento, el error que veo en los registros de ejecución dice que está tratando de editar un rango protegido en la hoja de destino. He agregado este try...catch de la siguiente manera, pero no aparece nada.

 function myfunction(e) { try { const startRow = 2; const targetColumn = 11; const ws = "Data" //get modified row and column const row = e.range.getRow(); const col = e.range.getColumn(); const s = e.source.getActiveSheet(); const cellValue = s.getActiveCell().getValue(); const salesPapeline = e.source.getActiveSheet().getRange(row, 1).getValue(); const branch = e.source.getActiveSheet().getRange(row, 13).getValue(); if (e.source.getActiveSheet().getName() === ws && col === 2 && row >= startRow) { const timeStamp = new Date(); //This checks if the Job/Lead is to be transferred to Branch 2 if (salesPapeline == "4. Convert" && cellValue == "2. Branch 2" && e.source.getActiveSheet().getRange(row, 12).getValue() == "TRANSFERRED") { const jobTagValue = e.source.getActiveSheet().getRange(row, 11).getValue(); let rowData = e.source.getActiveSheet().getRange(row, 1, 1, 12).getValues(); let newItems = []; let jobTag = rowData[0][10]; let name = rowData[0][3]; let company = rowData[0][4]; let clientNotes = rowData[0][7]; let startDate = rowData[0][9]; newItems.push(jobTag, '3. Current needs', '', name, '', company, clientNotes, '', '', '', '', '', startDate) e.source.getActiveSheet().getRange(row, 12).setValue('TRANSFERRED'); e.source.getActiveSheet().getRange(row, 13).setValue('2. Branch 2'); const salesSheet = SpreadsheetApp.openById(BRANCH2_FILE_ID); const destSheet = salesSheet.getSheetByName('[MGT-use] Recruiting Funnel'); if (newItems.length > 0) { const destRng = destSheet.getRange(destSheet.getLastRow() + 1, 1, 1, 13); destRng.setValues([newItems]); } else { return; } } } } catch (e1) { SpreadsheetApp.getUi().alert(e1.message); } }

Aquí hay una captura de pantalla de la configuración del disparador: ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

El disparador onEdit() maneja los errores silenciosamente. Puede ver los mensajes de error (y los registros) solo en la sección Ejecuciones:

ingrese la descripción de la imagen aquí

Para la depuración, en lugar de (o junto con) console.log() , puede usar la herramienta spreadsheet.toast() :

  • brindis (mensaje)
about 4 years ago · Juan Pablo Isaza Relatório

0

Esto verifica el rango que se escribió para ver si está en blanco

También puse algunas banderas de depuración allí en caso de que necesitemos avanzar más en el proceso. Pero realmente no veo nada de malo en ello, excepto que podría hacer un mejor uso del objeto de evento y reducir el tiempo de ejecución.

 function myfunction(e) { e.source.toast('entry'); try { const sh = e.range.getSheet(); if (sh.getName() == "Data" && e.range.columnStart == 2 && e.range.rowStart >= 2) { e.source.toast('Flag1'); const r = sh.getRange(e.range.rowStart, 1, 1, 12).getValues().flat(); if (r[0] == "4. Convert" && e.value == "2. Branch 2" && r[11] == "TRANSFERRED") { e.source.toast('Flag2'); let newItems = []; newItems.push(r[11], '3. Current needs', '', r[3], '', r[4], r[7], '', '', '', '', '', r[9]); sh.getRange(e.range.rowStart, 12).setValue('TRANSFERRED'); sh.getRange(e.range.rowStart, 13).setValue('2. Branch 2'); const ssh = SpreadsheetApp.openById(BRANCH2_FILE_ID); const dsh = ssh.getSheetByName('[MGT-use] Recruiting Funnel'); if (newItems.length > 0) { e.source.toast('Flag3'); const wr = dsh.getLastRow() + 1 const drg = dsh.getRange(wr, 1, 1, 13); drg.setValues([newItems]); SpreadsheetApp.flush(); if(drg.isBlank()) { SpreadsheetApp.getUi().alert("It did not go through");//warns you if the row that you just wrote to is blank. } } } } } catch (e) { console.log(e.message); } }

Si desea compartir algunos datos en una tabla, no me importaría mirarlos. Es posible que también deba explicar cómo funciona la hoja.

Nota: No sigo enlaces a otras cuentas de Google.

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