Sensacional, sempre achei um grande ponto negativo não ter isso algo semelhante pronto no Docs + Google, sei que tem uma questão de patente envolvida, mas realmente esse e o realce fácil de células duplicadas são alguns dos duros 'trade-offs' na escolha do Google Sheets ao invés do Excel.
tem como vc adicionar aplicativos gratuitos no google docs, vc precisa clicar o "+" na aba vertical do lado direito e escolher um aplicativo de "mail merge" (mala direta)
Muito bom, professor. Vou tentar adaptar isso para usar em um template de email ao invés de documento. Aliás, seria ótimo uma aula como esta para criar um email (gmail) de orçamento a partir dos dados de uma planilha google. 😃
Parabéns pela Aula !! Excelente !! Agora se eu quisesse ter um modelo padrão substituir pelo conteúdo de uma planilha e assim que gerasse esse novo documento, eu enviasse por email via scprit como seria ? Obrigado
Boa aula, professor bem articulado e a aula é bem dinâmica. Mas não há necessidade de incluir 3 variáveis de parâmetro (elem, ind, obj) pra função de chamada .map, bastava uma variável. Também não é necessário chamar o índice zero elem[0]. Eu tenho a impressão que isso foi copiado de algum outro lugar. Portanto, pra comprovar o domínio da matéria, eu gostaria que vc fizesse com duas colunas de dados, porque com uma coluna só é fácil.
Boa tarde professor, no caso tem como pegar imagens, por exemplo, colocar uma imagem que está no drive e colocar em cada certificado de acordo com o nome da pessoa? tipo mala direta de crachas por exemplo
Tem como fazer um formulário para incluir, editar, excluir e pesquisar os dados de uma planilha google sheet, selecionar determinado registro e imprimir apenas esse registro numa mala direta?
OBRIGADO PELO CONTEUDO, TEM COMO FAZ ISSO DE PEGAR OS DADOS DA PLANILHA SÓ QUE COM UMA CONDIÇÃO "SE". Ex : SÓ VAI IMPRIMIR O CERTIFICADO SE NA COLUNA B1 ESTIVER COM "CONCLUIDO" , SENDO ASSIM VAI IMPRIMIR TODAS AS LINHAS QUE ESTÃO COM ESSA CONDIÇÃO
Uma dúvida: quando você usa Elem[0] ele ainda assim passa por todos os elementos na função de callback? Fiquei com dúvida na lógica, o motivo dele não pegar só o elemento do índice 0.
Professor, rodei o código, a estrutura igual, mudei só os links das variáveis para as da instituição e adaptações deste tipo, mas eu o seguinte erro: Exception: Service unavailable: Documents. Sabe o que pode ser?
Isso não vai inferir nenhuma informação na planilha correto? sempre vai da planilha para o doc nunca ao contrário (caso faça uma alteração no doc por força maior), quero preserva sempre os dados da planilha intacto. E e se tiver um outro elemento ( como cpf e endereço por exemplo) como faço para ler e escrever esse(s) próximo(s) elemento(s) ?
Professor, por favor... tentei replicar o processo com mais variáveis... não consegui entender como o substituir mais variáveis no elem2.copy().replacetext()... esse exemplo só funciona com uma variável?
Obrigada! Eu que nunca fiz algo do tipo, consegui seguindo o passo a passo! Eu porém preciso incluir outros elementos no meu documento, como faço isso?
Bom dia. Segue seu tutorial e deu erro: //Tutorial th-cam.com/video/Oh82Vkrx3hE/w-d-xo.html //Variaveis da planilha BaseDados let app = SpreadsheetApp; let spreadsheet = app.getActiveSpreadsheet(); let sheet = spreadsheet.getSheetByName('banco'); // VAriavel doarquivo Mala direta let docmaladireta = DocumentApp.openByUrl('docs.google.com/document/d/1XqYXjclWFC9hnIG_7nzcYW5Bxur4pbCqjoSDD2m-PS4/edit'); // VAriavel do arquivo Tamplate let doctemplate = DocumentApp.openByUrl('docs.google.com/document/d/1UG7SARinB3f0DmaxWB5pJ2FP8aePHOyMw8FrD04qvU0/edit'); //Função que gera a mala direta function criarMalaDireta() { //Limpar mala direta docmaladireta.getBody().clear(); let paragrafos = doctemplate.getBody().getParagraphs() prefeito = sheet.getRange('A1:A').getValues(); prefeito.map((elem,ind,obj) => { if (elem[0] != ''){ //console.log(ind+' '+elem) paragrafos.map((elem2,ind2,obj2) => { docmaladireta.getBody().appendParagraph( elem2.copy().replaceText("{{PREFEITO}}",elem[0]) ) }); //Abri uma nova pagina para cada doc gerado //docmaladireta.getBody().appendPageBreak(); } }); } //erros de saída // dentro do bloco if 09:19:09 Erro Exception: Service unavailable: Documents(anônimo) (anônimo) @ Código.gs:29 (anônimo) @ Código.gs:28 crirMalaDireta @ Código.gs:24
Professor boa tarde! Tentei replicar o conteúdo mais infelizmente fica dando documento não acessível. Exception: The document is inaccessible. Please try again later. Alguma sugestão? COnferi o link da na planilha, dei permissão a todos. Até em guia anônima acessa.
Bem simples???😯.. Para iniciantes, um pouco complicado. Mas vou tentar, obrigada pela aula.😀
Sem chances! 😂
Tudo muito bem explicado... Parabéns! Aprecio demais as ferramentas do Google, MAS, nesse caso é Word e Excel mesmo!
Valeu!
ÓTIMO!! No vídeo foi feito substituindo apenas um dado. Poderia explicar para quem é iniciante como faz de mais de dois dados?
Professor, muito obrigado pela aula
Bem simples. Obrigado.
Muito obrigado, tava a 2 dias batendo cabeça pra entender isso
Obrigado professor, por compartilhar seus conhecimentos
bastante interessanto, vemos um futuro substituto do word
Sensacional, sempre achei um grande ponto negativo não ter isso algo semelhante pronto no Docs + Google, sei que tem uma questão de patente envolvida, mas realmente esse e o realce fácil de células duplicadas são alguns dos duros 'trade-offs' na escolha do Google Sheets ao invés do Excel.
th-cam.com/video/mfWL7Zc2ARc/w-d-xo.html
tem como vc adicionar aplicativos gratuitos no google docs, vc precisa clicar o "+" na aba vertical do lado direito e escolher um aplicativo de "mail merge" (mala direta)
Faça um vídeo falando sobre o GPT for Sheets, please :)
Seus conteúdos são excelentes!!! Alguém saberia me dizer se existe um conteúdo específico para geração de recibos de pagamento?
Muito bom, professor.
Vou tentar adaptar isso para usar em um template de email ao invés de documento.
Aliás, seria ótimo uma aula como esta para criar um email (gmail) de orçamento a partir dos dados de uma planilha google. 😃
Muito útil isso, obrigado!
Tmj
Parabéns pela Aula !! Excelente !! Agora se eu quisesse ter um modelo padrão substituir pelo conteúdo de uma planilha e assim que gerasse esse novo documento, eu enviasse por email via scprit como seria ? Obrigado
Boa aula, professor bem articulado e a aula é bem dinâmica.
Mas não há necessidade de incluir 3 variáveis de parâmetro (elem, ind, obj) pra função de chamada .map, bastava uma variável. Também não é necessário chamar o índice zero elem[0]. Eu tenho a impressão que isso foi copiado de algum outro lugar. Portanto, pra comprovar o domínio da matéria, eu gostaria que vc fizesse com duas colunas de dados, porque com uma coluna só é fácil.
Excelente aula
Boa tarde professor, no caso tem como pegar imagens, por exemplo, colocar uma imagem que está no drive e colocar em cada certificado de acordo com o nome da pessoa? tipo mala direta de crachas por exemplo
Como faço para criar um novo arquivo para cada correspondência da minha tabela?
Tem como fazer um formulário para incluir, editar, excluir e pesquisar os dados de uma planilha google sheet, selecionar determinado registro e imprimir apenas esse registro numa mala direta?
OBRIGADO PELO CONTEUDO, TEM COMO FAZ ISSO DE PEGAR OS DADOS DA PLANILHA SÓ QUE COM UMA CONDIÇÃO "SE".
Ex : SÓ VAI IMPRIMIR O CERTIFICADO SE NA COLUNA B1 ESTIVER COM "CONCLUIDO" , SENDO ASSIM VAI IMPRIMIR TODAS AS LINHAS QUE ESTÃO COM ESSA CONDIÇÃO
Uma dúvida: quando você usa Elem[0] ele ainda assim passa por todos os elementos na função de callback? Fiquei com dúvida na lógica, o motivo dele não pegar só o elemento do índice 0.
boa noite, fiz umas modificações veja se te ajuda
dados.forEach((elem) => {
if (elem[1] !== '') {
const novoParagrafo = paragrafos.map((paragrafo) => {
return paragrafo.copy()
.replaceText('{{NOME}}', elem[0])
.replaceText('{{CARTAO}}', elem[1])
.replaceText('{{COMPRADOS}}', elem[3]);
});
const texto = novoParagrafo.map((paragrafo) => paragrafo.getText()).join('');
if (texto.trim() !== '') {
novoParagrafo.forEach((paragrafo) => docsMalaDireta.getBody().appendParagraph(paragrafo));
//docsMalaDireta.getBody().appendPageBreak();
}
}
});
Quando preenche a mala direta, fica sem a formatação do texto do template. os negritos, alinhamento... Alguem pode me ajudar?
Gostaria de saber como colocar um campo "numero da inscrição" do aluno, sendo que ele se encontra na celula "A1:A" e o nome do aluno na "B1:B"?
Após fazer uma mala direta conforme visto nesse vídeo, observei que os dados não atualizam automaticamente depois de acrescentar mais dados
Professor, rodei o código, a estrutura igual, mudei só os links das variáveis para as da instituição e adaptações deste tipo, mas eu o seguinte erro: Exception: Service unavailable: Documents. Sabe o que pode ser?
não entendi como eu adicionaria varios locais pra inserir os dados no template, digamos: nome, cpf, endereço e afins
Isso não vai inferir nenhuma informação na planilha correto? sempre vai da planilha para o doc nunca ao contrário (caso faça uma alteração no doc por força maior), quero preserva sempre os dados da planilha intacto. E e se tiver um outro elemento ( como cpf e endereço por exemplo) como faço para ler e escrever esse(s) próximo(s) elemento(s) ?
Professor, por favor... tentei replicar o processo com mais variáveis... não consegui entender como o substituir mais variáveis no elem2.copy().replacetext()... esse exemplo só funciona com uma variável?
boa noite, fiz umas modificações veja se te ajuda
dados.forEach((elem) => {
if (elem[1] !== '') {
const novoParagrafo = paragrafos.map((paragrafo) => {
return paragrafo.copy()
.replaceText('{{NOME}}', elem[0])
.replaceText('{{CARTAO}}', elem[1])
.replaceText('{{COMPRADOS}}', elem[3]);
});
const texto = novoParagrafo.map((paragrafo) => paragrafo.getText()).join('');
if (texto.trim() !== '') {
novoParagrafo.forEach((paragrafo) => docsMalaDireta.getBody().appendParagraph(paragrafo));
//docsMalaDireta.getBody().appendPageBreak();
}
}
});
@@eduardocardosodosreissantos01 Apresentou o seguinte erro: ReferenceError: dados is not defined
@@SEDEASINFRAESTRUTURA let dados = sheet.getRange("A1:H").getValues(); ai depende de como vc definiu suas variaveis no sheets
Se tivesse mais de uma aba na planilha como faço mestre?
Se precisar copiar mais de um nome para o docs, como faz?
Fiquei confuso
Fiz pra testar no templete {{ DESCRIÇÃO}} e {{NÚMERO}}.
Paraa descriçâo deu certo, mas para o número não.
Nesse quesito o Google Docs ainda precisa melhorar, pois no Word é muito mais simples.
uma coisa q aconteceu é que ele não copiou a tabela do template. somente os textos. sabe o q pode fazer?
descobri aqui!! usei o getTables na variavel paragrafos, e a propriedade appendTable na variavel docsMaladireta.
Deu certo com 1 variavel.
Tentei colocar mais uma e nao deu certo.
Obrigada! Eu que nunca fiz algo do tipo, consegui seguindo o passo a passo! Eu porém preciso incluir outros elementos no meu documento, como faço isso?
Pode sim, qualquer coisa faça um orçamento de suporte premium pelo e-mail: webdesignemfoco@gmail.com
Tentei colocar o CPF mas não consegui. Se alguém conseguiu me ajude
Bom dia. Segue seu tutorial e deu erro:
//Tutorial th-cam.com/video/Oh82Vkrx3hE/w-d-xo.html
//Variaveis da planilha BaseDados
let app = SpreadsheetApp;
let spreadsheet = app.getActiveSpreadsheet();
let sheet = spreadsheet.getSheetByName('banco');
// VAriavel doarquivo Mala direta
let docmaladireta = DocumentApp.openByUrl('docs.google.com/document/d/1XqYXjclWFC9hnIG_7nzcYW5Bxur4pbCqjoSDD2m-PS4/edit');
// VAriavel do arquivo Tamplate
let doctemplate = DocumentApp.openByUrl('docs.google.com/document/d/1UG7SARinB3f0DmaxWB5pJ2FP8aePHOyMw8FrD04qvU0/edit');
//Função que gera a mala direta
function criarMalaDireta()
{
//Limpar mala direta
docmaladireta.getBody().clear();
let paragrafos = doctemplate.getBody().getParagraphs()
prefeito = sheet.getRange('A1:A').getValues();
prefeito.map((elem,ind,obj) =>
{
if (elem[0] != ''){
//console.log(ind+' '+elem)
paragrafos.map((elem2,ind2,obj2) => {
docmaladireta.getBody().appendParagraph(
elem2.copy().replaceText("{{PREFEITO}}",elem[0])
)
});
//Abri uma nova pagina para cada doc gerado
//docmaladireta.getBody().appendPageBreak();
}
});
}
//erros de saída
// dentro do bloco if
09:19:09 Erro Exception: Service unavailable: Documents(anônimo)
(anônimo) @ Código.gs:29
(anônimo) @ Código.gs:28
crirMalaDireta @ Código.gs:24
Professor boa tarde! Tentei replicar o conteúdo mais infelizmente fica dando documento não acessível. Exception: The document is inaccessible. Please try again later. Alguma sugestão? COnferi o link da na planilha, dei permissão a todos. Até em guia anônima acessa.
Já vi isso acontecer quando tinha mais de uma conta Google logada ao mesmo tempo