-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenviando_planilha.js
84 lines (66 loc) · 3.51 KB
/
enviando_planilha.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const puppeteer = require('puppeteer');
const xlsx = require('xlsx');
(async function main() {
try {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36');
await page.goto('https://web.whatsapp.com/');
// login no zap
// ler planilha
const workbook = xlsx.readFile('teste.xlsx');
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const contacts = xlsx.utils.sheet_to_json(worksheet, { header: ['name', 'number'] });
// nome na coluna A e número na coluna B
// Aguarda o campo de busca de contatos
await page.waitForSelector('.to2l77zo[data-tab="3"]', { timeout: 30000 }); // Exemplo de seletor para o campo de busca de contatos
// checa cada contato na lista coletando o dado
for (const contact of contacts) {
const contactNumber = contact.number;
// número na coluna B da planilha
// Busca o contato pelo número na barra de busca do WhatsApp usando os dados da coluna B
const searchSelector = '.to2l77zo[data-tab="3"';
await page.waitForSelector(searchSelector);
await page.type(searchSelector, contactNumber); // Digita o número na barra de busca
await page.keyboard.press('Enter'); // Pressiona Enter para iniciar a busca
try {
// Aguarda o contato aparecer na lista de resultados
const contactSelector = `span[title='${contact.name || contact.number}']._11JPr`;
await page.waitForSelector(contactSelector, { timeout: 5000 }); // Aumentei para 5 segundos
// Clica no contato encontrado
await page.click(contactSelector);
await page.waitForSelector("._199zF");
const messageBoxSelector = 'div[title="Digite uma mensagem"][contenteditable="true"]';
const editor = await page.$(messageBoxSelector);
await editor.focus();
const amountOfMessages = 5;
const delayBetweenMessages = 3000;
// tempo entre as mensagens em milissegundos
for (let i = 0; i < amountOfMessages; i++) {
await page.evaluate(() => {
const message = "teste";
document.execCommand('insertText', false, message);
});
const sendButtonSelector = 'button[aria-label="Enviar"]';
await page.click(sendButtonSelector);
await delay(delayBetweenMessages);
// Espera o tempo entre as mensagens
console.log(`Mensagem ${i + 1} enviada para ${contactNumber}`);
}
} catch (err) {
console.error(`Contato não encontrado para ${contactNumber}. Pulando para o próximo.`);
}
// Limpa o campo de busca para o próximo número
await page.click(searchSelector, { clickCount: 3 });
await page.keyboard.press('Backspace');
}
await browser.close();
} catch (e) {
console.error("error mine", e);
}
})();
function delay(time) {
return new Promise(function(resolve) {
setTimeout(resolve, time);
});
}