20 de set. de 2023
Script enviar email de acordo com uma coluna da planilha
* EnviaEmail()
*
* Dispara mensagens por e-mail quando houver
* determinada alteração em células de uma
* coluna específica
*
* 10/12/2020
**********************************************/
var nomeAba = "Sheet1"; // Nome da aba que será monitorada;
var colunaEmail = 2; // Coluna B, onde está o e-mail do destinatário
var colunaMonitor = 14; // Coluna N, que será monitorada
var colunaOK = 16; // Coluna P, onde será registrado se o e-mail foi enviado corretamente
var valor = "NÃO"; // valor da célula para que o e-mail seja enviado;
function EnviaEmail(e){
var resultado,destinatario;
var assunto = "Título do e-mail";
var mensagem = "Corpo do texto <br>que pode conter comandos <b>HTML</b>";
var aba = e.source.getActiveSheet();
var celula = e.range;
if(aba.getName()==nomeAba && celula.getColumn()==colunaMonitor && celula.getValue()==valor){
destinatario = aba.getRange(celula.getRow(),colunaEmail).getValue();
try {
MailApp.sendEmail({
to:destinatario,
subject:assunto,
htmlBody:mensagem
})
resultado = "Enviado";
} catch(erro) {
resultado = erro;
}
aba.getRange(celula.getRow(),colunaOK).setValue(resultado);
SpreadsheetApp.flush();
}
}
Esta pergunta está bloqueada, e o envio de respostas foi desativado.
O conteúdo da Comunidade pode não ter sido verificado ou atualizado. Saiba mais.
26 de out. de 2023
Olá
Desculpa a demora em atualizar o tópico.
Eu tive uma pequena dificuldade em encontrar uma solução para a sua demanda então eu pedi a ajuda do Expert Michel para me auxiliar.
Agora o código está atendendo as 4 demandas.
Enviar e-mail sem cópia e sem link de PDF.
Enviar e-mail sem cópia e com link de PDF.
Enviar e-mail com cópia e com link de PDF.
Enviar e-mail com cópia e sem link de PDF.
function email() {
// Definição de constantes e variáveis iniciais
const TABELA = "Painel"; // Nome da planilha
const linhaINICIAL = 1; // Linha inicial da planilha
const colunaENVIO = 11; // Coluna que contém o status de envio
const colunaSTATUS = 12; // Coluna que contém o status atual
const textoCONDICAO = "SIM"; // Texto de condição para envio
const textoENVIADO = "ENVIADO"; // Texto de status "enviado"
// Função para extrair o ID do link do Google Drive
function pegalink(link) {
const match = link.match(/\/d\/([a-zA-Z0-9-_]+)/);
if (match) {
return match[1];
}
return null;
}
// Obtém a planilha ativa
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba1 = planilha.getSheetByName(TABELA);
// Obtém um intervalo de dados na planilha
const intervalo = aba1.getRange(linhaINICIAL, 1, aba1.getLastRow() - linhaINICIAL + 1, colunaSTATUS);
const dados = intervalo.getValues();
// Loop pelos dados na planilha
for (let i = 0; i < dados.length; ++i) {
if (dados[i][colunaENVIO - 1] === textoCONDICAO && dados[i][colunaSTATUS - 1] !== textoENVIADO) {
// Extrai informações da linha de dados
const email = dados[i][0];
const cc1 = dados[i][4];
const cc2 = dados[i][5];
const assun = dados[i][7];
const titulo = dados[i][6];
const anexoLink = dados[i][8];
// Monta informações para o email
let copiaoculta;
if (cc1 != '') {
copiaoculta = cc1
}
if (cc2 != '') {
copiaoculta = `${cc1}, ${cc2}`
}
const fileId = pegalink(anexoLink);
const subject = `Faturamento ${titulo}`;
const message = `
<font size='3' face='Comfortaa'> Olá, tudo bem? </font><br>
<font size='3' face='Comfortaa'>${assun}</font><br>
<font size='3' face='Comfortaa'> Atenciosamente Time de Backoffice Comercial.</font><br><br>`;
let emailEnviado = false;
// Verifica se deve ser enviada uma cópia oculta e se há um arquivo anexado
if (!copiaoculta) {
if (fileId) {
const pdfFile = DriveApp.getFileById(fileId);
// Envia o email sem cópia oculta e com um anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
attachments: [pdfFile.getAs(MimeType.PDF)],
noReply: true,
});
} else {
// Envia o email sem cópia oculta e sem anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
noReply: true,
});
}
emailEnviado = true;
} else {
if (fileId) {
const pdfFile = DriveApp.getFileById(fileId);
// Envia o email com cópia oculta e com um anexo
console.log(copiaoculta)
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: copiaoculta,
name: 'Google Community',
attachments: [pdfFile.getAs(MimeType.PDF)],
noReply: true,
});
} else {
// Envia o email com cópia oculta e sem anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: copiaoculta,
name: 'Google Community',
noReply: true,
});
}
emailEnviado = true;
}
// Atualiza o status na planilha e encerra o código após o envio de um email
if (emailEnviado) {
aba1.getRange(linhaINICIAL + i, colunaSTATUS).setValue(textoENVIADO);
SpreadsheetApp.flush();
return;
}
}
}
}
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Michel Hazuky (Expert em Produtos Diamante (EP Diamante)) recomendou isto
Útil?Apoiar Reprovar
21 de set. de 2023
Olá
Esse código é um que eu uso nas minhas planilhas.
const email = dados[i][3];
const id = dados[i][0];
const assun = dados[i][4];
No lugar de um var (variável) usamos um const (constante) que recebe ( = ) os dados que estão dentro de um vetor ( [ ] ) na posição 3 .
No vetor as colunas começam com 0 (zero), a coluna A é o 0.
A id e o assun(to) seguem a mesma ideia.
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Mário Lúcio (Expert em Produtos Diamante (EP Diamante)) recomendou isto
Útil?Apoiar Reprovar
21 de set. de 2023
Olá
Experimenta esse código aqui lembra de mudar os apontamentos.
function email() {
const TABELA = "Painel";
const linhaINICIAL = 2;
const colunaENVIO = 12;
const colunaSTATUS = 14;
const textoCONDICAO = "Enviar";
const textoENVIADO = "ENVIADO";
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba1 = planilha.getSheetByName(TABELA);
const intervalo = aba1.getRange(linhaINICIAL, 1, aba1.getLastRow() - linhaINICIAL + 1, colunaSTATUS);
const dados = intervalo.getValues();
for (let i = 0; i < dados.length; ++i) {
if (dados[i][colunaENVIO - 1] === textoCONDICAO && dados[i][colunaSTATUS - 1] !== textoENVIADO) {
const email = dados[i][3];
const id = dados[i][0];
const assun = dados[i][4];
const subject = `Solicito, ${assun}`;
const message = `
<font size='3' face='Comfortaa'> Olá, foi aberto o chamado <b>${assun}</b></font><br>
<font size='3' face='Comfortaa'> O código dele é <b>${id}</b></font><br>
<font size='3' face='Comfortaa'> Assim que solucionado você receberá um e-mail com o parecer.</font><br><br>`;
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
noReply: true,
});
aba1.getRange(linhaINICIAL + i, colunaSTATUS).setValue(textoENVIADO);
SpreadsheetApp.flush();
}
}
}
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Mário Lúcio (Expert em Produtos Diamante (EP Diamante)) recomendou isto
Útil?Apoiar Reprovar
Todas as respostas (10)
21 de set. de 2023
Olá
Experimenta esse código aqui lembra de mudar os apontamentos.
function email() {
const TABELA = "Painel";
const linhaINICIAL = 2;
const colunaENVIO = 12;
const colunaSTATUS = 14;
const textoCONDICAO = "Enviar";
const textoENVIADO = "ENVIADO";
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba1 = planilha.getSheetByName(TABELA);
const intervalo = aba1.getRange(linhaINICIAL, 1, aba1.getLastRow() - linhaINICIAL + 1, colunaSTATUS);
const dados = intervalo.getValues();
for (let i = 0; i < dados.length; ++i) {
if (dados[i][colunaENVIO - 1] === textoCONDICAO && dados[i][colunaSTATUS - 1] !== textoENVIADO) {
const email = dados[i][3];
const id = dados[i][0];
const assun = dados[i][4];
const subject = `Solicito, ${assun}`;
const message = `
<font size='3' face='Comfortaa'> Olá, foi aberto o chamado <b>${assun}</b></font><br>
<font size='3' face='Comfortaa'> O código dele é <b>${id}</b></font><br>
<font size='3' face='Comfortaa'> Assim que solucionado você receberá um e-mail com o parecer.</font><br><br>`;
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
noReply: true,
});
aba1.getRange(linhaINICIAL + i, colunaSTATUS).setValue(textoENVIADO);
SpreadsheetApp.flush();
}
}
}
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Mário Lúcio (Expert em Produtos Diamante (EP Diamante)) recomendou isto
21 de set. de 2023
21 de set. de 2023
Olá
Esse código é um que eu uso nas minhas planilhas.
const email = dados[i][3];
const id = dados[i][0];
const assun = dados[i][4];
No lugar de um var (variável) usamos um const (constante) que recebe ( = ) os dados que estão dentro de um vetor ( [ ] ) na posição 3 .
No vetor as colunas começam com 0 (zero), a coluna A é o 0.
A id e o assun(to) seguem a mesma ideia.
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Mário Lúcio (Expert em Produtos Diamante (EP Diamante)) recomendou isto
5 de out. de 2023
5 de out. de 2023
Olá
bcc
é o argumento responsavel por enviar o "com copia" No exemplo abaixo temos o
bcc: 'teu-email@gmail.com',
é assim que ele tem que ficar. MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: 'teu-email@gmail.com',
name: 'Google Community',
noReply: true,
});
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
5 de out. de 2023
6 de out. de 2023
5 de out. de 2023
Eu não entendi, como assim pegar arquivos da planilha??
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
6 de out. de 2023
6 de out. de 2023
O pix é um PDF ou uma imagem??
Qual é a ideia completa do projeto.
Me passando a ideia completa e não fragmentada fica mais fácil de pensar em uma solução.
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
6 de out. de 2023
9 de out. de 2023
Olá, Karina Monteiro 321, seja bem vindo a comunidade Editores de Documentos Google
Por favor, poderia seguir estes passos para compartilhar sua Planilha? Dessa forma poderemos ajudá-lo.
Se ela tiver dados sensíveis sugiro criar uma copia com dados fictícios (liberado para edição), apenas com a tua estrutura para podermos entender e assim poder lhe ajudar na sua necessidade.
Por favor, poderia seguir estes passos para compartilhar sua Planilha? Dessa forma poderemos ajudá-lo.
Se ela tiver dados sensíveis sugiro criar uma copia com dados fictícios (liberado para edição), apenas com a tua estrutura para podermos entender e assim poder lhe ajudar na sua necessidade.
Lembrando que dados sensíveis seriam; nomes completos, números de telefone, e-mails, dados bancários, ...
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
9 de out. de 2023
10 de out. de 2023
atualizei o código
function email() {
const TABELA = "Painel";
const linhaINICIAL = 1;
const colunaENVIO = 11;
const colunaSTATUS = 12;
const textoCONDICAO = "Sim";
const textoENVIADO = "ENVIADO";
function pegalink(link) {
const match = link.match(/\/d\/([a-zA-Z0-9-_]+)/);
if (match) {
return match[1];
}
return null;
}
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba1 = planilha.getSheetByName(TABELA);
const intervalo = aba1.getRange(linhaINICIAL, 1, aba1.getLastRow() - linhaINICIAL + 1, colunaSTATUS);
const dados = intervalo.getValues();
for (let i = 0; i < dados.length; ++i) {
if (dados[i][colunaENVIO - 1] === textoCONDICAO && dados[i][colunaSTATUS - 1] !== textoENVIADO) {
const email = dados[i][0];
const cc1 = dados[i][4];
const cc2 = dados[i][5];
// const cc = 'copia-oculta@gmail.com',
const assun = dados[i][7];
const titulo = dados[i][6];
const anexoLink = dados[i][8];
const copiaoculta = cc1 + "," + cc2;
const fileId = pegalink(anexoLink);
if (fileId) {
const pdfFile = DriveApp.getFileById(fileId);
const subject = `Faturamento ${titulo}`;
const message = `
<font size='3' face='Comfortaa'> Olá, tudo bem? </b></font><br>
<font size='3' face='Comfortaa'>${assun}<b></b></font><br>
<font size='3' face='Comfortaa'> Atenciosamente Time de Backoffice Comercial.</font><br><br>`;
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: copiaoculta,
name: 'Google Community',
attachments: [pdfFile.getAs(MimeType.PDF)],
noReply: true,
});
aba1.getRange(linhaINICIAL + i, colunaSTATUS).setValue(textoENVIADO);
SpreadsheetApp.flush();
} else {
Logger.log("Link do Google Drive inválido:", anexoLink);
}
}
}
}
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
11 de out. de 2023
11 de out. de 2023
Olá
Faz um teste enviando com o link e sem o link pra ver o que acontece.
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
16 de out. de 2023
16 de out. de 2023
Eu não entendi muito bem.
Se tiver link ele tá enviando??
E se não tiver o link ele não envia??
É isso???
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
16 de out. de 2023
26 de out. de 2023
Olá
Desculpa a demora em atualizar o tópico.
Eu tive uma pequena dificuldade em encontrar uma solução para a sua demanda então eu pedi a ajuda do Expert Michel para me auxiliar.
Agora o código está atendendo as 4 demandas.
Enviar e-mail sem cópia e sem link de PDF.
Enviar e-mail sem cópia e com link de PDF.
Enviar e-mail com cópia e com link de PDF.
Enviar e-mail com cópia e sem link de PDF.
function email() {
// Definição de constantes e variáveis iniciais
const TABELA = "Painel"; // Nome da planilha
const linhaINICIAL = 1; // Linha inicial da planilha
const colunaENVIO = 11; // Coluna que contém o status de envio
const colunaSTATUS = 12; // Coluna que contém o status atual
const textoCONDICAO = "SIM"; // Texto de condição para envio
const textoENVIADO = "ENVIADO"; // Texto de status "enviado"
// Função para extrair o ID do link do Google Drive
function pegalink(link) {
const match = link.match(/\/d\/([a-zA-Z0-9-_]+)/);
if (match) {
return match[1];
}
return null;
}
// Obtém a planilha ativa
const planilha = SpreadsheetApp.getActiveSpreadsheet();
const aba1 = planilha.getSheetByName(TABELA);
// Obtém um intervalo de dados na planilha
const intervalo = aba1.getRange(linhaINICIAL, 1, aba1.getLastRow() - linhaINICIAL + 1, colunaSTATUS);
const dados = intervalo.getValues();
// Loop pelos dados na planilha
for (let i = 0; i < dados.length; ++i) {
if (dados[i][colunaENVIO - 1] === textoCONDICAO && dados[i][colunaSTATUS - 1] !== textoENVIADO) {
// Extrai informações da linha de dados
const email = dados[i][0];
const cc1 = dados[i][4];
const cc2 = dados[i][5];
const assun = dados[i][7];
const titulo = dados[i][6];
const anexoLink = dados[i][8];
// Monta informações para o email
let copiaoculta;
if (cc1 != '') {
copiaoculta = cc1
}
if (cc2 != '') {
copiaoculta = `${cc1}, ${cc2}`
}
const fileId = pegalink(anexoLink);
const subject = `Faturamento ${titulo}`;
const message = `
<font size='3' face='Comfortaa'> Olá, tudo bem? </font><br>
<font size='3' face='Comfortaa'>${assun}</font><br>
<font size='3' face='Comfortaa'> Atenciosamente Time de Backoffice Comercial.</font><br><br>`;
let emailEnviado = false;
// Verifica se deve ser enviada uma cópia oculta e se há um arquivo anexado
if (!copiaoculta) {
if (fileId) {
const pdfFile = DriveApp.getFileById(fileId);
// Envia o email sem cópia oculta e com um anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
attachments: [pdfFile.getAs(MimeType.PDF)],
noReply: true,
});
} else {
// Envia o email sem cópia oculta e sem anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
name: 'Google Community',
noReply: true,
});
}
emailEnviado = true;
} else {
if (fileId) {
const pdfFile = DriveApp.getFileById(fileId);
// Envia o email com cópia oculta e com um anexo
console.log(copiaoculta)
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: copiaoculta,
name: 'Google Community',
attachments: [pdfFile.getAs(MimeType.PDF)],
noReply: true,
});
} else {
// Envia o email com cópia oculta e sem anexo
MailApp.sendEmail(email, subject, message, {
htmlBody: message,
bcc: copiaoculta,
name: 'Google Community',
noReply: true,
});
}
emailEnviado = true;
}
// Atualiza o status na planilha e encerra o código após o envio de um email
if (emailEnviado) {
aba1.getRange(linhaINICIAL + i, colunaSTATUS).setValue(textoENVIADO);
SpreadsheetApp.flush();
return;
}
}
}
}
Qualquer coisa volte a perguntar.
*Todos os Experts são voluntários que dispõem do seu tempo pessoal para contribuir na comunidade.
G®Δ√ΣŦØ
Google Products Expert
Google Products Expert
Michel Hazuky (Expert em Produtos Diamante (EP Diamante)) recomendou isto
26 de out. de 2023
const id = dados[i][0];
const assun = dados[i][4];
const subject = `Solicito, ${assun}`;
eu altero de acordo com a coluna da planilha?