Web Design

Zachyťte zprávy Gmailu do tabulky Google

Pomocí skriptu Google Apps Script mohou obchodníci zaznamenávat zprávy Gmailu, analyzovat v nich relevantní informace a přidávat je řádek po řádku do tabulky Google.

To může být užitečné zejména pro zachycení potenciálních zákazníků nebo kontaktů.

Zde je scénář. Představte si, že se váš elektronický obchod rozhodl spolupracovat s charitativní organizací. Účastníci podávají návrhy prostřednictvím webových stránek charity. Vaším úkolem je přečíst si tyto návrhy, vybrat lidi, kterým může vaše firma pomoci, a kontaktovat je, abyste mohli začít.

Problém je v tom, že webové stránky charitativní organizace byly vytvořeny v 1990. letech na uzamčené, proprietární platformě. Příspěvky na webu nelze přidávat do databáze ani jinak ukládat. Místo toho vám mohou být tyto příspěvky zaslány e-mailem pouze ve formátu prostého textu.

Řešení? Zachyťte a analyzujte tyto e-maily pro snadnou interakci tím, že je přidáte do tabulky Google. V tomto článku vám vysvětlím, jak to udělat.

List a skript

Práce začíná vytvořením nové tabulky Google. Pojmenuji to „Příklad charitativního e-mailu“.

Začněte s novou Tabulkou Google.

Začněte s novou Tabulkou Google.

Přejděte do nabídky „Nástroje“ na listu a vyberte položku nabídky „Editor skriptů“.

Přidružte tabulky Google k vlastním skriptům prostřednictvím

Přidružte tabulky Google k vlastním skriptům pomocí „Editoru skriptů“.

Tento odkaz otevře nový editor skriptů Google, na kterém budeme pracovat. Tento skript jsem nazval „Příklad charitativního e-mailu“. Editor skriptů nám umožňuje psát funkce JavaScriptu, které poběží v naší tabulce.

Pomocí editoru skriptů můžete napsat funkce JavaScriptu, které se spouštějí v tabulce.

Pomocí editoru skriptů můžete napsat funkce JavaScriptu, které se spouštějí v tabulce.

Existuje mnoho způsobů, jak napsat skript pro načtení zpráv z Gmailu a jejich přidání do tabulky Google. V tomto příkladu použiji čtyři funkce: onOpen, shromáždit, getGmail, a parseEmail.

onOpen

Projekt onOpen funkce je ve skriptech Google Apps jedinečná. Spustí se vždy při otevření listu. Název tedy musí být onOpen. Můžete to však udělat téměř cokoli chcete. V našem případě do listu přidáme novou nabídku a položku nabídky.

function onOpen() { const spreadsheet = SpreadsheetApp.getActive(); let menuItems = [ {jméno: 'Shromáždit e-maily', functionName: 'shromáždit'}, ]; spreadsheet.addMenu('Charity', menuItems); }

Tato funkce má tři části.

Nejprve použijeme SpreadsheetApp třídy, abyste získali aktivní list — tj. list, na který se uživatel dívá. Tento objekt listu je přiřazen konstantě JavaScriptu „tabulka“.

const spreadsheet = SpreadsheetApp.getActive();

Dále vytvořím řadu položek nabídky. V tomto příkladu má naše pole pouze jednu položku nabídky, ale mohlo by jich mít více. Pokud jej napíšete tímto způsobem, bude snazší přidávat položky nabídky podle potřeby.

Všimněte si, že název funkce popisuje funkci zpětného volání, která se spustí, když uživatel klikne na položku nabídky „Shromáždit e-maily“. V tomto případě zavolám funkci s názvem shromáždit.

let menuItems = [ {jméno: 'Shromáždit e-maily', functionName: 'shromáždit'}, ];

Dokumentace Google podrobně popisuje, jak přidat nabídku. Pro naše účely stačí zaměstnat addMenu metoda — předá ji za prvé do názvu nabídky a za druhé do pole položek nabídky.

spreadsheet.addMenu('Charity', menuItems);

V editoru skriptů můžeme tuto funkci spustit kliknutím na tlačítko spustit, černý trojúhelník, který vypadá jako tlačítko pro přehrávání videa. Případně bychom mohli aktualizovat tabulku, ale tím bychom zavřeli editor skriptů. Pokud se zavře, můžeme jej znovu otevřít z nabídky Nástroje.

Tlačítko Spustit nám umožňuje provést vybranou funkci v editoru skriptů.

Tlačítko Spustit nám umožňuje provést vybranou funkci v editoru skriptů.

Při prvním spuštění aplikace jí budete muset udělit oprávnění k přístupu k vašemu účtu Google.

Udělte skriptu přístup ke svému účtu Google.

Udělte skriptu přístup ke svému účtu Google.

Po spuštění této funkce se přesuneme do nové nabídky a položky nabídky v charitativní tabulce.

V tabulce se objeví nová nabídka a položka nabídky.

V tabulce se objeví nová nabídka a položka nabídky.

shromáždit

Dále napíšeme shromáždit funkce.

Zde by měl být název logický. Pro mě slovo „shromáždit“ vyjadřuje myšlenku shromažďování a organizování. Funkci si však můžete pojmenovat, jak chcete.

function collect() { let messages = getGmail(); let curSheet = SpreadsheetApp.getActive(); messages.forEach(message => {curSheet.appendRow(parseEmail(message))}); }

Funkce plní tři úkoly.

Nejprve načte všechny charitativní e-mailové zprávy zavoláním na getGmail funkci, kterou napíšu příště.

let messages = getGmail();

Dále používá SpreadsheetApp třídy k získání aktivního listu.

let curSheet = SpreadsheetApp.getActive();

Nakonec funkce iteruje přes všechny zprávy a po odeslání do tabulky přidá požadovaný obsah z každé z nich parseEmail funkce, kterou ještě musíme napsat.

messages.forEach(message => {curSheet.appendRow(parseEmail(message))});

V tomto posledním kroku se toho děje hodně, tak si to pojďme zopakovat.

Pro každou zpráva in zprávy, funkce získá aktuální list, curSheet.

Poté používá Google appendRow způsob přidání řádku do listu. Tato metoda obvykle přebírá objekt pole. Ale v tomto případě poskytujeme výsledek jiné funkce, parseEmail, který zase poskytne požadované pole.

getGmail

Projekt getGmail funkce dělá nejvíce práce.

Nejprve nastavíme hodnotu konstanty JavaScriptu s názvem „query“ na vyhledávací řetězec Gmailu.

const query = "from:a@e.com AND předmět:Příklad charity NOT label:done";

Tento vyhledávací řetězec je přesně to, co byste použili pro pokročilé vyhledávání v Gmailu. Všimněte si, že uvádíme adresu „od“ a „předmět“ e-mailu. Zajistíme také, aby e-mailová zpráva neobsahovala štítek „hotovo“.

Řetězec vyhledávacího dotazu je identický s pokročilým vyhledáváním v Gmailu.

Řetězec vyhledávacího dotazu je identický s pokročilým vyhledáváním v Gmailu.

Dále používáme Google GmailApp třídy pro spuštění vyhledávání v doručené poště uživatele. Výsledkem tohoto hledání budou všechna vlákna z charitativní organizace se správným předmětem.

let threads = GmailApp.search(query);

Pokud máte na svém účtu Gmail mnoho zpráv, můžete získat dávky po deseti. Tím se skript urychlí.

let threads = GmailApp.search(query,0,10);

Následující dva řádky funkce zabrání tomu, aby byl e-mail přidán do naší tabulky dvakrát.

Nezapomeňte, že ve vyhledávacím dotazu jsme vyloučili zprávy se štítkem „hotovo“. Nyní tedy ke zprávám, které jsme právě načetli, přidáme štítek „hotovo“. Při dalším spuštění skriptu bude tyto zprávy ignorovat.

První řádek používá Google getUserLabelByName metoda k nalezení štítku „hotovo“ a jeho přiřazení k proměnné „label“. Pokud tento štítek v účtu Gmail uživatele ještě neexistuje, vytvoří se na dalším řádku.

let label = GmailApp.getUserLabelByName("hotovo"); if (!label) {label = GmailApp.createLabel("hotovo")}

Poslední část této funkce shromažďuje každou e-mailovou zprávu, přidá ji do pole „zprávy“ a označí ji jako „hotovo“.

threads.forEach(thread => { messages.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread); });

Nakonec funkce vrátí pole zpráv.

zpětné zprávy;

Co následuje, je hotovo getGmail funkce.

function getGmail() { const query = "from:roggio@yahoo.com AND předmět:Příklad charity NOT label:done"; let threads = GmailApp.search(query); let label = GmailApp.getUserLabelByName("hotovo"); if (!label) {label = GmailApp.createLabel("hotovo")} let messages = []; threads.forEach(thread => { messages.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread); }); zpětné zprávy; }

parseEmail

Poslední funkce „analyzuje“ e-mailovou zprávu a naformátuje ji tak, aby odpovídala naší tabulce.

Tato funkce musí být specifická pro formát prostého textu zprávy. Pojďme se tedy podívat, co nám web dobročinné organizace posílá.

datum: Čt, 16. dubna 2020 jméno: Olga příjmení: Razcok email: oraxcok@example.com telefon: 202-456-1111 ip: 35.138.107.243 komentář: Opravdu bych se rád zúčastnil tohoto programu. oblíbená_barva: hnědá

K vyčištění a naformátování této kopie zprávy použiji regulární výrazy JavaScriptu. Použiji Regex Pal, nástroj pro regulární výrazy, abych určil, které výrazy by dělaly to, co potřebuji.

Regex Pal vám umožní zjistit, jaké části textu budou odpovídat konkrétnímu regulárnímu výrazu.

Regex Pal vám umožní zjistit, jaké části textu budou odpovídat konkrétnímu regulárnímu výrazu.

K oddělení položek v seznamu použiji později čárky. Proto odstraním čárky v datu, aby nedošlo k záměně.

datum: čt, dubna 16, 2020

Tento regulární výraz nahradí čárky prázdným řetězcem, což je v podstatě nic.

nechat rozebrat = zpráva.nahradit(/,/g,'')

V tomto případě je „zpráva“ zpráva předaná uživateli parseEmail funkce z shromáždit funkce, kterou jsem psal dříve.

Další regulární výraz je účinný, protože odstraňuje většinu znaků nového řádku (n) z naší e-mailové zprávy ve formátu prostého textu a odstraňuje všechny předchozí znaky, včetně dvojteček.

Například změní „křestní_jméno: Olga“ na „, Olga“ (ano, to je čárka, mezera a slovo „Olga“).

nechat parsed = message.replace(/,/g,'')
    .replace(/n*.+:/g,',')

Předchozí krok zanechá před datem nechtěnou čárku. Takže další nahradit příkaz to odstraní.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',')
    .replace(/^,/,'')

Stále existuje několik zbývajících znaků nového řádku. Tento další příkaz je odstraní.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'')
    .replace(/n/g,'')

Nyní máme řetězec oddělený čárkami, který vypadá takto:

Čt 16. dubna 2020, Olga, Razcok, oraxcok@...

Můžeme to transformovat do pole s vestavěným JavaScriptem rozdělit metoda.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace(/n/g, '').rozdělit(',');

Nyní je naše e-mailová zpráva rozdělena, chcete-li, jako pole.

["Čt 16. dubna 2020", "Olga", "Razcok", "oraxcok@..."]

Už bys mohl skoro přestat. Přidejte jednoduchý příkaz return a skript bude fungovat.

zpětná zpráva;

Je tu však ještě jedno vylepšení, které můžeme udělat. E-mailová zpráva obsahuje informace, které nepotřebujeme, jako je adresa internetového protokolu (IP) odesílatele a její oblíbená barva.

IP: 35.138.107.243
oblíbená_barva: hnědá

Můžeme je odstranit z našeho pole pomocí mapa, metoda pole JavaScript. Zde je výsledek mapa metoda je přiřazena k proměnné „výsledek“.

let vysledek = [0,1,2,3,4,6].map(index => parsed[index]);

Tato linka je hustá, tak to vezmeme kousek po kousku. Nejprve máme pole čísel.

[0,1,2,3,4,6]

Čísla v tomto poli představují pozice v zpráva pole. Pamatujte, že pole jsou založena na nule. Když počítáte pozice v poli, začínáte na nule.

  • Datum – pozice 0
  • Jméno – pozice 1
  • Příjmení — pozice 2
  • Email – pozice 3
  • Telefon – pozice 4
  • IP – pozice 5
  • Komentář – pozice 6
  • Oblíbená barva – pozice 7

Projekt mapa metoda vezme každé číslo v poli a přiřadí jej k hodnotě „index“, čímž vytvoří nové pole mínus nechtěná IP adresa a data oblíbené barvy.

[0,1,2,3,4,6].map(index => analyzovat[index]);

Zde je to, co bylo dokončeno parseEmail funkce vypadá.

function parseEmail(message){ let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace (/n/g,'') .split(','); let vysledek = [0,1,2,3,4,6].map(index => parsed[index]); vrátit výsledek; }

Zkus to

Za předpokladu, že charitativní organizace poslala prostý textový e-mail ve stejném formátu jako výše, po kliknutí na položku nabídky „Shromáždit e-maily“ budete mít nový řádek.

Skript přidal do tabulky řádek. Přidá řádek pro každý e-mail, který charita odešle, kdykoli kliknete na položku nabídky „Shromáždit e-maily“.

Související články

0 Komentáře
Vložené zpětné vazby
Zobrazit všechny komentáře
Tlačítko Nahoru