The e parameter in your onFormSubmit(e) function in Google Apps Script is an event object that contains information about the form submission. To see the raw text or structure of this event object, you can use Logger.log() or console.log().
Here's how you can do it:
function onFormSubmit(e) {
// Log the entire event object to see its structure and content.
Logger.log(e);
// You can also stringify it to get a JSON representation,
// which can be very helpful for understanding nested properties.
Logger.log(JSON.stringify(e, null, 2));
// If you're specifically interested in the form responses,
// you can log those as well. The structure might vary slightly
// depending on whether your form is directly linked to a Google Sheet
// or if it's a standalone Google Form.
// For a form submission directly to a Google Sheet, 'e.values' might be available:
if (e.values) {
Logger.log("Form Values (e.values):");
Logger.log(e.values);
}
}
O problema no seu script é sutil, mas crítico, e está concentrado nesta única linha dentro do loop:
var resposta = resposta[pergunta][i] ? resposta[pergunta][0] : 'N/A';
Existem dois erros fatais acontecendo aqui que causam o comportamento que você está vendo:
Sobrescrita de Variável (O Erro Principal): Você tem uma variável chamada resposta que, antes do loop, guarda todos os seus dados (e.namedValues). Dentro do loop, você declara outra variável com o mesmo nome (var resposta). Na primeira vez que o loop roda, ele funciona. Mas na segunda vez, a variável resposta original já foi destruída e substituída por uma string (a resposta da primeira pergunta). Qualquer tentativa subsequente de acessar resposta['Nome do Cliente'] falhará, pois você está tentando tratar uma string como um objeto, resultando em "N/A" para todas as perguntas restantes.
Índice Incorreto: Você está usando resposta[pergunta][i]. O i é o contador do seu loop (0, 1, 2, 3...). No entanto, o valor de e.namedValues para cada pergunta é um array que quase sempre tem apenas um elemento, no índice [0]. Portanto, quando i for 1, a expressão resposta[pergunta][1] será undefined, fazendo com que a lógica sempre retorne "N/A".
Para resolver isso, precisamos usar nomes de variáveis diferentes e o índice correto. O código abaixo está corrigido, é mais legível e mais seguro.
Substitua sua função onFormSubmit por esta:
function onFormSubmit(e) {
// Use um nome de variável claro para todas as respostas do formulário.
var respostasDoFormulario = e.namedValues;
var dropdownSelection = respostasDoFormulario['Tribunal/Investigador'][0];
var emailSubject = 'Envio de formulário de solicitação de novo investigador';
// As perguntas do formulário (sem alterações aqui)
var questionOrder = [
'Nome do Advogado',
'Nome do cliente',
'Cobrar',
'Tribunal/Investigador',
'Data do Tribunal:',
'Narrativa do caso:',
'Itens de ação - Liste as datas de vencimento para cada:',
];
var emailBody = 'Um novo formulário foi enviado para Teste. Detalhes:\n\n';
// Loop corrigido para construir o corpo do e-mail
for (var i = 0
; i < questionOrder.length; i++) {
var pergunta = questionOrder[i];
var respostaDaPergunta = 'N/A'; // Define um padrão 'N/A'
// Verifica se existe uma resposta para a pergunta atual no objeto de respostas
if (respostasDoFormulario[pergunta]) {
// Se existir, pega o primeiro (e único) valor da resposta
respostaDaPergunta = respostasDoFormulario[pergunta][0];
}
emailBody += pergunta + ': ' + respostaDaPergunta + '\n\n';
}
var emailMap = {
// E-mails enviados para os seguintes destinatários com base na sala escolhida no formulário
'Tribunais #1 e JDR #1': 'som...@somewhere.org',
'Tribunal nº 3 e JDR nº 3': 'alguém...@algumlugar.org',
'Sala do Tribunal 208 e JDR #2': 'alguém...@algumlugar.org',
'Tribunal 210 e JDR #4': 'som...@somewhere.org',
'JDR - SOMENTE Sala do Tribunal nº 5': 'som...@somewhere.org',
};
if (emailMap.hasOwnProperty(dropdownSelection)) {
MailApp.sendEmail(emailMap[dropdownSelection], emailSubject, emailBody);
} else {
Logger.log('Aviso: dropdownSelection "' + dropdownSelection + '" não encontrado no emailMap');
}
}
Nomes de Variáveis Claros: A variável que contém todas as respostas agora se chama respostasDoFormulario. A variável para a resposta de cada pergunta dentro do loop se chama respostaDaPergunta. Elas nunca entram em conflito.
Lógica Segura: Em vez de uma linha complexa, a lógica agora é simples:
Primeiro, verifica se uma resposta para a pergunta existe (if (respostasDoFormulario[pergunta])). Isso evita erros se uma pergunta não for obrigatória e for deixada em branco.
Se existir, ele sempre pega o primeiro elemento ([0]), que é o correto.
Resultado Final: O loop agora processa cada pergunta corretamente, usando o objeto respostasDoFormulario original em cada iteração, resultando em um e-mail com todos os dados preenchidos.
--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-apps-script-community/582d2138-c552-42f2-abfa-1b0804fccdc6n%40googlegroups.com.