Ex.: Nome do Participante: {{Nome do Participante}}
O texto que está dentro das chaves duplas deve ser exatamente o nome do campo em questão.
►Compartilhá-lo para que "Qualquer pessoa com o link" possa acessá-lo como "Leitor"
PASSO 4 - Sobre a pasta para abrigar os pdfs que vão chegar:
►Acessar esta pasta
PASSO 5 - Sobre o formulário online:
►Criar as perguntas e incluir as orientações devidas para os respondentes
►Publicar o formulário, copiar o link gerado deste arquivo e colá-lo no mesmo arquivo onde se copiou o link gerado do template acima
PASSO 7 - Dentro da planilha criada, ir para a alternativa EXTENSÕES, do menu horizontal, depois para a opção APPS SCRIPT, e tomar os passos indicados a seguir:

MODELO 1 - Gera, no Drive indicado, somente um arquivo Google Doc que vai replicar o pdf enviado ao respondente
function onFormSubmit(e) {
// 1. Definir IDs e e-mail do respondente
var docTemplateId = 'ID-do-Template'; // O ID do template é descrito na URL deste arquivo, e refere-se ao código alfanumérico entre as partes /d/ e /edit
var folderId = 'ID-da-pasta-que-abrigará-osarquivos-das-notificações'; // O ID da pasta é o código que fica na URL da pasta após a parte /folders/
var emailRecipient = e.namedValues['Endereço de e-mail']; // Já está no padrão
// 2. Obter a linha de dados mais recente
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = e.range;
var row = range.getRow();
var allData = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues();
var data = allData[0];
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
var name = e.namedValues['Nome Completo'];
var mrec = e.namedValues['Modalidade da Contribuição'];
? e.namedValues['Modalidade da Contribuição'][0].trim()
: '';
var sigla = ''; // Variável que receberá "C" ou "B"
// Estrutura condicional para definir a sigla
if (sele === 'Comida') {
sigla = 'C';
} else if (sele === 'Bebida') {
sigla = 'B';
} else {
sigla = ''; // Ou outro valor padrão, caso não seja nenhum dos dois
}
// 3. Criar uma cópia do modelo e preencher
var copyFile = DriveApp.getFileById(docTemplateId).makeCopy('Confirmação de presença - ' + name[0] + '__' + sigla[0] + '.pdf'); // Use um nome de arquivo único
var copyDoc = DocumentApp.openById(copyFile.getId());
var copyBody = copyDoc.getBody();
// Substituir os marcadores no modelo pelas respostas reais
for (var i = 0; i < headers.length; i++) {
copyBody.replaceText('{{' + headers[i] + '}}', data[i]);
}
// 4. Salvar e converter para PDF
copyDoc.saveAndClose();
var pdfBlob = copyFile.getAs(MimeType.PDF);
// Mover o PDF para a pasta desejada (opcional)
var folder = DriveApp.getFolderById(folderId);
folder.addFile(copyFile); // Adiciona na pasta
DriveApp.getRootFolder().removeFile(copyFile); // Remove da raiz (se a cópia foi feita lá)
// 5. Enviar o e-mail com o anexo
var subject = 'Confirmação de presença - ' + name[0] + '__' + sigla;
var body = "Valeu pela sua confirmação e colaboração para a nossa Festa!\n\nAtenciosamente,\nComissão Organizadora da Festa";
GmailApp.sendEmail(emailRecipient, subject, body, {
attachments: [pdfBlob.setName('Confirmação de presença - ' + name[0] + '__' + sigla + '.pdf')]
});
}
MODELO 2 - Gera, no Drive indicado, dois arquivos: um arquivo Google Doc e outro PDF, ambos com teor idêntico ao pdf enviado ao respondente
function onFormSubmit(e) {
// 1. Definir IDs e e-mail do respondente
var docTemplateId = '1JK8H7tZnOKWWQNXYz80ZaNJSEf5rclEOl-UumRRF3Eo'; // Substitua pelo ID do seu Google Doc modelo
var folderId = '19hvRwCMZL6gXdw8Z7tz4XnppGgs17BjJ'; // Substitua pelo ID da pasta onde deseja salvar os arquivos gerados
var emailRecipient = e.namedValues['Endereço de e-mail'][0]; // Substitua 'Endereço de e-mail' pelo título exato da coluna de e-mail na sua planilha
// 2. Obter a linha de dados mais recente
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = e.range;
var row = range.getRow();
var allData = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues();
var data = allData[0];
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
// Obter valores dos campos do formulário (simplificado com namedValues, se disponíveis)
var name = e.namedValues['Nome Completo'];
var mrec = e.namedValues['Modalidade da Contribuição'];
? e.namedValues['Modalidade da Contribuição'][0].trim()
: '';
var sigla = ''; // Variável que receberá "C" ou "B"
// Estrutura condicional para definir a sigla
if (sele === 'Comida') {
sigla = 'C';
} else if (sele === 'Bebida') {
sigla = 'B';
} else {
sigla = 'N'; // Ou outro valor padrão, caso não seja nenhum dos dois
}
// --- MODIFICAÇÃO PRINCIPAL ---
// A primeira coluna (índice 0) é o carimbo de data/hora.
var timestamp = data[0];
// Formata a data/hora para o formato brasileiro (ex: 25 de Novembro de 2025 às 23:25)
// Use 'GMT-03:00' ou o fuso horário correto da sua planilha/região, se diferente.
var formattedDate = Utilities.formatDate(timestamp, "GMT-03:00", "dd 'de' MMMM 'de' yyyy 'às' HH:mm");
// Para fins de nome de arquivo, uma data mais simples (dd-MM-yyyy HH-mm) é melhor
var simpleFormattedDate = Utilities.formatDate(timestamp, "GMT-03:00", "dd-MM-yyyy HH-mm");
// -----------------------------
// Definir um nome base único para ambos os arquivos usando a data simples
var baseFileName = lp + '__' + sigla + '-' + iarea + '__' + name + '__' + mrec + '__' + simpleFormattedDate;
var folder = DriveApp.getFolderById(folderId);
// 3. Criar uma cópia do modelo (como Google Doc) e preencher
var copyFile = DriveApp.getFileById(docTemplateId).makeCopy(baseFileName + '.doc', folder); // Salva a cópia do DOC diretamente na pasta
var copyDoc = DocumentApp.openById(copyFile.getId());
var copyBody = copyDoc.getBody();
// Substituir os marcadores no modelo pelas respostas reais
for (var i = 0; i < headers.length; i++) {
// Se for o carimbo de data/hora, use a versão formatada para o corpo do documento.
if (headers[i] === 'Carimbo de data/hora') { // Substitua 'Carimbo de data/hora' pelo nome exato do cabeçalho da data na sua planilha
copyBody.replaceText('{{' + headers[i] + '}}', formattedDate || '');
} else {
copyBody.replaceText('{{' + headers[i] + '}}', data[i] || ''); // Usa '' se o valor for nulo
}
}
// 4. Salvar o Google Doc e gerar o PDF
copyDoc.saveAndClose(); // Gerar o blob do PDF a partir do Google Doc preenchido
var pdfBlob = copyFile.getAs(MimeType.PDF);
pdfBlob.setName(baseFileName + '.pdf'); // Define o nome do arquivo PDF
// NOTA: O arquivo .doc já está salvo na pasta de destino (linha 47)
// Agora criamos o arquivo PDF na mesma pasta
folder.createFile(pdfBlob);
// 5. Enviar o e-mail com o anexo (o PDF)
var subject = 'Confirmação de presença - ' + name[0] + '__' + sigla;
var body = "Valeu pela sua confirmação e colaboração para a nossa Festa!\n\nAtenciosamente,\nComissão Organizadora da Festa";
GmailApp.sendEmail(emailRecipient, subject, body, {
attachments: [pdfBlob], // Anexa o blob do PDF
name: 'Confirmação de presença - ' + name[0] + '__' + sigla + '.pdf'
});
}
PASSO 8 - Na parte do ACIONADOR, convém estabelecer o padrão mostrado na imagem a seguir:
Após os passos acima, fechar a planilha e fazer testes de preenchimento para, se necessário, aprimorar o Script.


















Nenhum comentário:
Postar um comentário