Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Odoslanie e-mailu z Tabuliek Google vyžaduje použitie skriptu Google Apps. Ale nebojte sa, ak ste ešte nikdy nevytvorili jediný skript Google Apps, odoslanie e-mailu je veľmi jednoduché.

V nasledujúcom návode sa naučíte, ako skontrolovať hodnotu bunky v Tabuľkách Google . Ak hodnota prekročí určitú hranicu, môžete automaticky odoslať e-mail s upozornením na ľubovoľnú e-mailovú adresu.

Tento skript má mnoho použití. Ak denné zárobky vo vašom prehľade predaja klesnú pod určitú úroveň, môžete dostať upozornenie. Alebo môžete dostať e-mail, ak vaši zamestnanci nahlásia, že vo vašej tabuľke sledovania projektu fakturovali klientovi príliš veľa hodín.

Bez ohľadu na aplikáciu, tento skript je presvedčivý. Ušetrí vám to aj čas potrebný na manuálne sledovanie aktualizácií tabuliek.

Krok 1: Odoslanie e-mailu pomocou Tabuľky Google

Pred vytvorením skriptu Google Apps Script na odoslanie e-mailu z Tabuliek Google budete potrebovať aj e-mailovú adresu služby Gmail, ku ktorej bude mať skript Google Apps prístup, aby vám mohol odosielať e-maily s upozornením.

Budete tiež musieť vytvoriť novú tabuľku, ktorá bude obsahovať e-mailovú adresu.

Stačí pridať stĺpec s menom a stĺpec e-mailu a vyplniť ich s osobou, ktorej chcete dostávať e-mail s upozornením.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Teraz, keď máte e-mailovú adresu, na ktorú chcete poslať e-mail s upozornením, je čas vytvoriť skript.

Ak chcete prejsť do editora skriptov, kliknite na Nástroje a potom kliknite na položku Editor skriptov .

Uvidíte okno skriptu s predvolenou funkciou s názvom  myFunction() . Premenujte to na SendEmail() .

Ďalej prilepte nasledujúci kód do funkcie SendEmail():

// Fetch the email address var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2"); var emailAddress = emailRange.getValues(); // Send Alert Email. var message = 'This is your Alert email!'; // Second column var subject = 'Your Google Spreadsheet Alert'; MailApp.sendEmail(emailAddress, subject, message);

Tento kód funguje takto:

  • getRange a getValues ​​vytiahnu hodnotu z bunky zadanej v metóde getRange.
  • var message a var predmet definujú text, ktorý bude zostavovať váš e-mail s upozornením.
  • Funkcia MailApp.sendEmail konečne vykonáva funkciu odosielania e-mailov pomocou skriptov Google Script pomocou vášho pripojeného účtu Google.

Uložte skript kliknutím na ikonu disku a potom ho spustite kliknutím na ikonu spustenia (šípka vpravo).

Majte na pamäti, že Google Script potrebuje povolenie na prístup k vášmu účtu Gmail na odoslanie e-mailu. Takže pri prvom spustení skriptu sa vám môže zobraziť upozornenie, ako je uvedené nižšie.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Kliknite na Skontrolovať povolenia a zobrazí sa ďalšia obrazovka s upozornením, ktorú budete musieť obísť.

Táto obrazovka s upozornením je spôsobená tým, že píšete vlastný skript Google Script, ktorý nie je zaregistrovaný ako oficiálny.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Stačí kliknúť na Rozšírené a potom kliknúť na odkaz Prejsť na Odoslať e-mail (nebezpečné) .

Budete to musieť urobiť iba raz. Váš skript sa spustí a e-mailová adresa, ktorú ste zadali v tabuľke, dostane e-mail podobný tomu nižšie.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Krok 2: Čítanie hodnoty z bunky v Tabuľkách Google

Teraz, keď ste úspešne napísali skript Google Apps, ktorý dokáže odoslať e-mail s upozornením, je čas, aby bol tento e-mail s upozornením funkčnejší.

Ďalším krokom, ktorý sa naučíte, je prečítať hodnotu údajov z tabuľky Google, skontrolovať hodnotu a vydať kontextovú správu, ak je táto hodnota nad alebo pod horným limitom.

Predtým, ako to urobíte, budete musieť vytvoriť ďalší hárok v tabuľke Google, s ktorou pracujete. Tento nový hárok nazvite „MyReport“.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Majte na pamäti, že bunka D2 je bunka, ktorú budete chcieť skontrolovať a porovnať. Predstavte si, že chcete každý mesiac vedieť, či váš celkový predaj neklesol pod 16 000 USD.

Poďme vytvoriť Google Apps Script, ktorý to urobí.

Vráťte sa späť do okna Script Editor kliknutím na Tools a potom Script Editor .

Ak používate rovnakú tabuľku, stále  tam budete mať funkciu SendEmail() . Vystrihnite tento kód a vložte ho do programu Poznámkový blok. Budete to potrebovať neskôr.

Prilepte nasledujúcu funkciu do okna kódu.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); var ui = SpreadsheetApp.getUi(); // Check totals sales if (monthSales < 16000){="" ui.alert('sales="" too="" low!');="" }="">

Ako tento kód funguje:

  • Načítajte hodnotu z bunky D2 do premennej monthSales .
  • Výpis IF porovnáva mesačný predaj v bunke D2 s 16 000 USD
  • Ak je hodnota vyššia ako 16 000, kód spustí okno so správou prehliadača s upozornením.

Uložte tento kód a spustite ho. Ak funguje správne, vo vašom prehliadači by sa mala zobraziť nasledujúca výstražná správa.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Teraz, keď máte skript Google Apps, ktorý dokáže odoslať e-mailové upozornenie, a ďalší skript, ktorý dokáže porovnať hodnotu z tabuľky, ste pripravení tieto dva prvky skombinovať a namiesto spustenia výstražnej správy odoslať upozornenie.

Krok 3: Dajte to všetko dohromady

Teraz je čas spojiť dva skripty, ktoré ste vytvorili, do jedného skriptu.

V tomto bode by ste mali mať tabuľku s kartou s názvom Hárok1, ktorá obsahuje príjemcu e-mailu s upozornením. Druhá karta s názvom MyReport obsahuje všetky informácie o vašom predaji.

Späť v editore skriptov je čas precvičiť si všetko, čo ste sa doteraz naučili.

Nahraďte celý kód v editore skriptov svojimi dvoma funkciami, ktoré sú upravené tak, ako je to znázornené tu.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); // Check totals sales if (monthSales < 16000){="" fetch="" the="" email="" address="" var="" emailrange="SpreadsheetApp.getActiveSpreadsheet().getSheetByName(" sheet1").getrange("b2");"="" var="" emailaddress="emailRange.getValues();" send="" alert="" email.="" var="" message='This month your sales were ' +="" monthsales;="" second="" column="" var="" subject='Low Sales Alert' ;="" mailapp.sendemail(emailaddress,="" subject,="" message);="" }="">

Všimnite si úpravy tu.

Do príkazu IF prilepte skript SendEmail do funkcie CheckSales() do zátvoriek príkazu if.

Po druhé, zreťazte premennú monthSales na koniec e-mailovej správy pomocou znaku + .

Jediné, čo treba urobiť, je spustiť funkciu CheckSales() každý mesiac.

Ak to chcete urobiť, v editore skriptov:

  1. Kliknite na položku ponuky Upraviť a potom kliknite na Spúšťače aktuálneho projektu .
  2. V spodnej časti obrazovky kliknite na vytvoriť nový spúšťač .
  3. Vyberte funkciu CheckSales na spustenie.
  4. Zmeňte Vybrať zdroj udalosti na časovo riadené .
  5. Zmeniť  Vyberte typ spúšťača založeného na čase na Mesačný časovač .

Kliknutím na tlačidlo Uložiť dokončite spúšťač.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Každý mesiac sa spustí váš nový skript a porovná celkovú sumu mesačného predaja v bunke D2 s 16 000 USD.

Ak je menej, pošle vám varovný e-mail s upozornením na nízky mesačný predaj.

Použite Tabuľky Google na odoslanie e-mailu na základe hodnoty bunky

Ako môžete vidieť, skripty Google Apps obsahujú veľa funkcií v malom balení. Len s niekoľkými jednoduchými riadkami kódu môžete robiť úžasné veci.

Ak chcete experimentovať viac, skúste pridať limit porovnania vo výške 16 000 USD do inej bunky v tabuľke a potom si ho prečítajte vo svojom skripte pred vykonaním porovnania. Týmto spôsobom môžete zmeniť limit len ​​zmenou hodnoty v hárku.

Vyladením kódu a pridaním nových blokov kódu môžete stavať na týchto jednoduchých veciach, ktoré sa naučíte, a nakoniec vytvoriť úžasné skripty Google.

Automatizace procesu

Zatím je to dobré, ale výše uvedený skript se spustí ručně, pouze pokud nenastavíme žádné spouštěče. Naštěstí Google zjednodušil konfiguraci spouštěné automatizace. Zde jsou kroky. 

V editoru Apps Script klikněte na ikonu Spouštěče na levém postranním panelu (vypadá jako malé hodiny).

Klikněte na vytvořit nové spouštěnír nebo na Přidat spouštěč v pravém dolním rohu stránky Spouštěče.

V rozbalovací nabídce Vyberte, kterou funkci chcete spustit vyberte odeslat e-maily< funkci i=4>.

V rozbalovací nabídce Vybrat zdroj události vyberte Na základě času.

V rozbalovací nabídce Vyberte typ časového spouštění vyberte požadovanou frekvenci (např. Denní časovač pro denní e-maily, Týdenní časovač pro týdenní e-maily atd.).

Pokud je to možné, vyberte požadovaný časový rozsah nebo den v týdnu.

Kliknutím Uložit vytvořte spouštěč.

Po uložení klikněte na Nasadit v pravém horním rohu a postupujte podle pokynů pro označení a definici nasazení. Ke spuštění budete muset udělit oprávnění k automatizaci a totéž platí pro samotný skript.  

Pokud jde o daný trigger, protože náš příklad je o zasílání upomínek na faktury, předpokládáme, že jsou měsíční a je vhodné je zasílat každý 1. den v měsíci mezi 13:00 a 14:00. Frekvenci a načasování však samozřejmě můžete změnit podle svých potřeb. 

Jak poslat e-mail s přílohou

Abychom vám ukázali, jak posílat e-maily s přílohami, znovu použijeme vzorový list s upomínkami faktur a upravíme úryvek tak, aby obsahoval přílohy. Nyní začínáme s funkcí a šablona e-mailu je součástí kódu později. sendEmailReminders

Měli bychom zdůraznit, že níže uvedený úryvek stahuje přílohy e-mailů ze složky na Disku Google, kde je důležité uvést ID složky a dodržovat danou konvenci pojmenování. Více o tom v Pojďme rozebrat sekci kódu

function sendEmailReminders() { // Získání aktivního listu var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Získání rozsahu dat (kromě řádku záhlaví) var dataRange = list.getRange(2, 1, list.getLastRow() - 1, list.getLastColumn()); // Získání hodnot z datového rozsahu var data = dataRange.getValues(); // Procházet řádky dat pro (var i = 0; i < data.length; i++) { var row = data[i]; // Získání hodnot z každého sloupce var businessName = row[0]; var email = řádek[1]; var Číslo faktury = řádek[2]; var Částka faktury = řádek[3]; var dueDate = row[4]; var předmět = řádek[5]; // Tělo e-mailu var emailBody = "Vážený " + obchodní název + ",\n\n" + "Toto je připomínka, že faktura #" + Číslo faktury + " za $" + Částka faktury + " je splatný dne " + datum splatnosti + ".\n" + "Najděte prosím přiloženou fakturu.\n\n" + "Děkuji za vaši okamžitou pozornost k této záležitosti."; // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } // Odešlete e-mail s přílohou MailApp.sendEmail({ to: email, subject: subject, body: emailBody, attachments: [invoiceFile] }); } }

Pojďme rozebrat kód

1. Definujte funkci:sendEmailReminders

function sendEmailReminders() {

Řádek deklaruje funkci s názvem , která bude obsahovat kód pro zasílání e-mailových upomínek s přílohami.sendEmailReminders

2. Získejte aktivní list:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

Řádek načte aktivní list z aktuálně otevřeného dokumentu Tabulek Google.

3. Získejte rozsah dat (kromě řádku záhlaví):

var dataRange = list.getRange(2, 1, list.getLastRow() - 1, list.getLastColumn());

Tento řádek získá rozsah dat v listu, kromě řádku záhlaví. Začíná od druhého řádku (řádek 2) a prvního sloupce (sloupec 1) a zasahuje do posledního řádku a posledního sloupce listu.

Postranní poznámka: Když vytváříte vlastní list, musíte jej upravit tak, aby odpovídal vašemu listu. dataRange

4. Získejte hodnoty z rozsahu dat:

var data = dataRange.getValues();

Tento řádek načte hodnoty (obsah) z rozsahu buněk definovaného v předchozím kroku.

5. Projděte řádky dat:

for (var i = 0; i < data.length; i++) { var řádek = data[i];

Tato smyčka prochází každým řádkem v poli. Proměnná představuje aktuální řádek dat v každé iteration.fordatarow

6. Získejte hodnoty z každého sloupce:

var businessName = row[0]; var email = řádek[1]; var Číslo faktury = řádek[2]; var Částka faktury = řádek[3]; var dueDate = row[4]; var předmět = řádek[5];

Řádky výše extrahují hodnoty z každého sloupce v aktuálním řádku dat. Každá hodnota je později přiřazena k proměnné pro snadný odkaz ve skriptu. Uvedené hodnoty jsou vlastní našemu vzorovému listu. 

7. Vytvořte tělo e-mailu:

var emailBody = "Vážený " + obchodní název + ",\n\n" + "Toto je připomínka, že faktura #" + Číslo faktury + " za $" + Částka faktury + " je splatný dne " + datum splatnosti + ".\n" + "Najděte prosím přiloženou fakturu.\n\n" + "Děkuji za vaši okamžitou pozornost k této záležitosti.";

Kód vytvoří tělo e-mailu pomocí hodnot extrahovaných z listu. Tělo e-mailu je řetězec, který obsahuje název firmy, číslo faktury, částku faktury a datum splatnosti.

8. Získejte odpovídající soubor faktury:

var fakturaFolderId = 'ID_VAŠE_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; }

Tyto řádky načítají soubor faktury přidružený k aktuálnímu řádku. 

Nejprve se ke složce se souborem faktur přistupuje pomocí jejího ID složky. Nezapomeňte nahradit skutečným ID složky. YOUR_FOLDER_ID_HERE

Všimněte si, že konvence pojmenování v našem příkladu je a skutečná faktura se jmenuje „123456.pdf“. Pokud jsou vaše přílohy pojmenovány jinak, budete muset aktualizovat formátování. (číslo faktury + '.pdf')

Dále skript hledá soubor se stejným názvem jako číslo faktury (za předpokladu, že soubor je ve formátu PDF). 

Pokud je soubor nalezen, je přiřazen k proměnné; jinak skript zaprotokoluje chybovou zprávu a přejde na další řádek.soubor faktury

9. Odešlete e-mail s přílohou:

MailApp.sendEmail({ do: email, předmět: předmět, tělo: emailBody, přílohy: [soubor faktury] });

Tento řádek odesílá tělo a e-mailové přílohy a zde jsou výsledky, které byste měli získat. Také všechny kroky automatizace platí tak, jak bylo popsáno výše, a má smysl zachovat měsíční spouštěč, protože se jedná o zasílání upomínek na faktury. 

Pošlete HTML e-mail pomocí GSheets

Chcete-li odeslat HTML e-mail, můžete provést některé, docela jednoduché, úpravy výše popsaného skriptu. Tady to je: 

function sendEmailReminders() { // Získání aktivního listu var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Získání rozsahu dat (kromě řádku záhlaví) var dataRange = list.getRange(2, 1, list.getLastRow() - 1, list.getLastColumn()); // Získání hodnot z datového rozsahu var data = dataRange.getValues(); // Procházet řádky dat pro (var i = 0; i < data.length; i++) { var row = data[i]; // Získání hodnot z každého sloupce var businessName = row[0]; var email = řádek[1]; var Číslo faktury = řádek[2]; var Částka faktury = řádek[3]; var dueDate = row[4]; var předmět = řádek[5]; // HTML tělo e-mailu var emailBodyHtml = "<p>Vážený " + obchodní název + ",</p>" + "<p>Toto je připomínka, že faktura č. + Číslo faktury + " za $" + Částka faktury + " je splatný dne " + dueDate + ".</p>" + "<p>Najděte prosím přiloženou fakturu.</p>" + "<p>Děkuji za vaši okamžitou pozornost této záležitosti.</p>"; // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } // Odešlete e-mail s přílohou MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }

V této verzi je prostý text nahrazen proměnnou, která obsahuje obsah ve formátu HTML. emailBodyemailBodyHtml

Při volání funkce je vlastnost body nahrazena také vlastností, která odešle e-mail jako HTML e-mail.MailApp.sendEmail()htmlBody

Postranní poznámky: 

Z důvodu pohodlí používáme místo ve skriptu. Každá možnost by fungovala, i když je rozhodně čitelnější. V každém případě můžete skript přeformátovat a nahradit operátor zřetězení zástupnými symboly při interpolaci řetězců. varconstconst${expression}

Žádný ze skriptů také neobsahuje funkce, protože ty nebyly pro naše příklady nutné. S těmito typy skriptů je ale samozřejmě také možné přidávat a dokonce automatizovat. bccbcc

Nakonec můžete vše okořenit přidáním vlastních stylů CSS, viz aktualizovaná funkce níže. var emailBodyHtml =

// HTML tělo emailu se styly CSS var emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, bezpatkové;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; barva: #4a4a4a;}" + "</style></hlava><tělo>" + "<p>Vážený <span class='faktura-info'>" + název firmy + "</span></p>" + "<p>Toto je připomínka, že faktura #<span class='informace o fakture'>" + Číslo faktury + "</span> za $<span class='faktura-info'>" + Částka faktury + "</span> je splatná dne <span class='faktura-info'>" + datum splatnosti + "</span>.</p>" + "<p>Najděte prosím přiloženou fakturu.</p>" + "<p>Děkuji za vaši okamžitou pozornost této záležitosti.</p>" + "</body></html>";

Profesionální tipy: 

  • Jednoduše, někteří poskytovatelé poštovních schránek nemusí podporovat a vykreslovat silně stylizované e-maily správně nebo vůbec. <styl>
  • Chcete-li zjistit, do jaké míry poskytovatelé poštovních schránek podporují vaše e-maily ve formátu HTML, použijte funkci Mailtrap Email Testing. 
  • Abych znovu zdůraznil, Pokud potřebujete odeslat objemově, je vždy nejlepší použít místo funkce správný MTA . odeslat e-mail
  • V této souvislosti mějte na paměti omezení svého účtu Gmail. Ty se liší pro Google Workspace a/nebo váš soukromý účet. 

Jak odesílat spouštěcí e-maily z Tabulek Google?

Když buňka dosáhne určité hodnoty

Ukážeme vám, jak odeslat automatický e-mail na základě hodnoty buňky. V našem příkladu bude faktura odeslána, když buňka Částka faktury dosáhne hodnoty 0, což znamená, že zákazník byl zrušen. 

Zadaná hodnota buňky spustí vlastní e-mail o zrušení, který okamžitě osloví zákazníka. A opět, kroky automatizace zůstávají stejné, stále můžete použít měsíční spouštěč pro tyto e-maily. 

Mějte na paměti, že skript je stejný, jaký jsme použili pro odesílání HTML e-mailů a příloh. Má však další vrstvu funkčnosti pro zavedení popsané podmíněné logiky. Zde je kód. 

function sendEmailReminders() { // Získání aktivního listu var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Získání rozsahu dat (kromě řádku záhlaví) var dataRange = list.getRange(2, 1, list.getLastRow() - 1, list.getLastColumn()); // Získání hodnot z datového rozsahu var data = dataRange.getValues(); // Procházet řádky dat pro (var i = 0; i < data.length; i++) { var row = data[i]; // Získání hodnot z každého sloupce var businessName = row[0]; var email = řádek[1]; var Číslo faktury = řádek[2]; var Částka faktury = řádek[3]; var dueDate = row[4]; var předmět = řádek[5]; // Určení těla e-mailu na základě částky faktury var emailBodyHtml; if (invoiceAmount == 0) { // Předmět e-mailu zákazníka skončit = "Upozornění zákazníka na zrušení"; emailBodyHtml = "<html><hlava><styl>" + "body {font-family: Arial, bezpatkové;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; barva: #4a4a4a;}" + "</style></hlava><tělo>" + "<p>Vážený " + obchodní název + ",</p>" + "<p>Všimli jsme si, že vaše fakturovaná částka je 0 $. Je nám líto, že odcházíte, a ocenili bychom jakoukoli zpětnou vazbu, proč jste se rozhodli přestat používat naše služby.</p>" + "<p>Pokud můžeme něco udělat pro zlepšení našich služeb nebo získání zpět vašeho podnikání, dejte nám prosím vědět.</p>" + "<p>Děkujeme za vaši minulou práci.</p>" + "</body></html>"; } else { // E-mail s běžnou fakturou e-mailBodyHtml = "<html><hlava><styl>" + "body {font-family: Arial, bezpatkové;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; barva: #4a4a4a;}" + "</style></hlava><tělo>" + "<p>Vážený <span class='faktura-info'>" + název firmy + "</span></p>" + "<p>Toto je připomínka, že faktura #<span class='informace o fakture'>" + Číslo faktury + "</span> za $<span class='faktura-info'>" + Částka faktury + "</span> je splatná dne <span class='faktura-info'>" + datum splatnosti + "</span>.</p>" + "<p>Najděte prosím přiloženou fakturu.</p>" + "<p>Děkuji za vaši okamžitou pozornost této záležitosti.</p>" + "</body></html>"; } // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_HERE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktur.hasNext()) {Soubor faktur = Soubory faktur.další(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } // Odešlete e-mail s přílohou MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }

Dolů k prolomení kódu 

Upozorňujeme, že se zaměřujeme pouze na to, co je ve funkci, abychom se vyhnuli opakování toho, co již bylo popsáno. emailBodyHtml

Aktualizovaná část kódu určuje obsah těla e-mailu na základě částky faktury. Pokud je fakturovaná částka , předpokládá se, že jde o odchozího zákazníka a používá se jiná šablona e-mailu. Zde je rozpis kódu: „0“

var emailBodyHtml;

Deklaruje proměnnou s názvem a ukládá obsah těla e-mailu. A zpočátku je ponechán nedefinovaný.emailBodyHtml

if (částka faktury == 0) { ... }

Výpis zkontroluje, zda je fakturovaná částka 0. Pokud ano, provede se kód ve složených závorkách. Tento blok obsahuje šablonu e-mailu zákazníka pro ukončení hovoru.if(`{}`)

předmět = "Upozornění zákazníka na ukončení provozu";

Řádek nastavuje předmět e-mailu na pro zákazníky, kteří chtějí odejít.

emailBodyHtml = "<html><hlava><styl>" +...

 Řádek nastavuje hodnotu proměnné podle šablony e-mailu zákazníka, který má stornovat. Šablona je řetězec HTML se styly CSS definovanými v sekci. Tělo e-mailu obsahuje zástupné symboly pro obchodní název a zprávu pro customer.emailBodyHtml<head>

} jinak { ... }

Blokování se provede, když částka faktury není 0. Nastaví proměnnou na běžnou šablonu e-mailu faktury. Šablona e-mailu je řetězec HTML se styly CSS definovanými v sekci. Tělo e-mailu obsahuje zástupné symboly pro obchodní název, číslo faktury, částku faktury a datum splatnosti.elseemailBodyHtml<head>

Pomocí této podmíněné logiky skript odešle jiné tělo e-mailu podle toho, zda je částka faktury (zákazník, který přestane pracovat) nebo nenulová (běžná faktura). 0

Když se změní hodnota buňky

Nyní použijeme stejný skript jako výše a rozšíříme jej tak, aby pokryl další případ použití – upgrade klienta a správce účtu musí poslat e-mail s poděkováním s fakturou. 

Abychom to vysvětlili, myšlenka je taková, že každý měsíc má správce účtu nový list (v našem příkladu list 2) s přihlašovacími údaji klientů. 

Kód nyní porovná dva listy a klientům, kteří upgradovali (jejich Částku fakturyČástka fakturyČástka faktury je větší než předchozí). 

Také není třeba se dotknout e-mailu o zrušení, protože existuje šance, že se někdo rozhodl přestat používat naši imaginární službu. Zde je scénář.

function sendEmailReminders() { var list1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List1"); var list2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); var dataRange1 = list1.getRange(2, 1, list1.getLastRow() - 1, list1.getLastColumn()); var dataRange2 = list2.getRange(2, 1, list2.getLastRow() - 1, list2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues(); for (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var řádek2 = data2[i]; var businessName = row1[0]; var email = řádek1[1]; var Číslo faktury = řádek1[2]; var fakturaAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(',', 39;.')); var fakturaAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.')); if (isNaN(částka faktury1) || isNaN(částka faktury2)) { console.error("Neplatné částky faktury pro firmu: " + businessName + ". Částka faktury1: " + Částka faktury1 + ", Částka faktury2: " + Částka faktury2 ); pokračovat; } var dueDate = row1[4]; var předmět; var emailBodyHtml; if (fakturaČástka1 <Částka faktury2) { console.log("Odesílání 'Děkujeme za upgrade' e-mailu na " + email + ". FakturaČástka1: " + FakturaČástka1 + ", FakturaČástka2: " + Částka faktury2); předmět = "Děkujeme za upgrade"; emailBodyHtml = "<html><body>" + "<p>Vážený " + obchodní název + ",</p>" + "<p>Děkujeme za upgrade! Vážíme si vašeho podnikání a těšíme se na vaši službu.</p>" + "<p>S pozdravem</p>" + "<p>Vaše společnost</p>" + "</body></html>"; MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Odesílání 'Upozornění zákazníka na ukončení provozu' e-mailu na " + email + ". fakturaAmount1: " + fakturaAmount1); předmět = "Upozornění zákazníka na ukončení provozu"; emailBodyHtml = "<html><hlava><styl>" + "body {font-family: Arial, bezpatkové;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; barva: #4a4a4a;}" + "</style></hlava><tělo>" + "<p>Vážený " + obchodní název + ",</p>" + "<p>Všimli jsme si, že vaše fakturovaná částka je 0 $. Je nám líto, že odcházíte, a ocenili bychom jakoukoli zpětnou vazbu, proč jste se rozhodli přestat používat naše služby.</p>" + "<p>Pokud můžeme něco udělat pro zlepšení našich služeb nebo získání zpět vašeho podnikání, dejte nám prosím vědět.</p>" + "<p>Děkujeme za vaši minulou práci.</p>" + "</body></html>"; MailApp.sendEmail({ to: email, předmět: předmět, htmlBody:emailBodyHtml }); } else { console.log("Odesílání e-mailu 'Připomenutí faktury' na " + e-mail + ". Částka faktury1: " + Částka faktury1 + ", Částka faktury2: " + Částka faktury2); předmět = "Připomenutí faktury"; emailBodyHtml = "<html><hlava><styl>" + "body {font-family: Arial, bezpatkové;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; barva: #4a4a4a;}" + "</style></hlava><tělo>" "<p>Vážený <span class='faktura-info'>" + název firmy + "</span></p>" + "<p>Toto je připomínka, že faktura #<span class='informace o fakture'>" + Číslo faktury + "</span> za $<span class='faktura-info'>" + Částka faktury1 + "</span> je splatná dne <span class='faktura-info'>" + datum splatnosti + "</span>.</p>" + "<p>Najděte prosím přiloženou fakturu.</p>" + "<p>Děkuji za vaši okamžitou pozornost této záležitosti.</p>" + "</body></html>"; // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, attachments: [fakturaFile] }); } } }</p>" + "</body></html>"; // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } MailApp.sendEmail({ to: email, předmět: předmět, htmlBody: emailBodyHtml, přílohy: [fakturaSoubor] }); } } }</p>" + "</body></html>"; // Připojte příslušnou fakturu – Musíte zadat správné ID složky, kde jsou uloženy vaše faktury var fakturaFolderId = 'ID_SLOŽKY_ZDE'; var fakturaFolder = DriveApp.getFolderById(invoiceFolderId); var fakturaFiles = fakturaFolder.getFilesByName(číslo faktury + '.pdf'); // Za předpokladu, že soubory faktur jsou ve formátu PDF var fakturaFile; if (soubory faktury.hasNext()) {Soubor faktury = Soubory faktur.dalsi(); } else { // Pokud soubor faktury nebyl nalezen, můžete tento řádek přeskočit nebo zaznamenat chybu console.error("Soubor faktury nebyl nalezen pro číslo faktury: " + Číslo faktury); pokračovat; } MailApp.sendEmail({ to: email, předmět: předmět, htmlBody: emailBodyHtml, přílohy: [fakturaSoubor] }); } } }

Dolů k prolomení kódu 

1. Skript začíná získáním odkazů na List1 a List2.

var list1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var list2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

2. Poté načte data z obou listů, počínaje druhým řádkem, aby vyloučil záhlaví.

var dataRange1 = list1.getRange(2, 1, list1.getLastRow() - 1, list1.getLastColumn()); var dataRange2 = list2.getRange(2, 1, list2.getLastRow() - 1, list2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues();

3. Skript iteruje řádky v obou listech (za předpokladu, že počet řádků je na obou listech stejný). Porovnává částky faktur z List1 a List2 pro každý odpovídající řádek.

for (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var řádek2 = data2[i]; // Získání fakturovaných částek z obou listů var fakturaAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var fakturaAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));

kopírovat

4. Skript poté zkontroluje podmínky pro zasílání různých typů e-mailů na základě porovnání částek faktur z List1 a List2.

if (invoiceAmount1 <fakturaAmount2) { // Odeslat "Děkujeme za upgrade" email } else if (invoiceAmount1 == 0) { // Odeslat "Upozornění zákazníka o ukončení" email } else { // Odeslat "Připomenutí faktury" e-mailem }

kopírovat

Klíčové je porovnání, které kontroluje, zda je částka faktury v Listu 1 nižší než částka faktury v Listu 2 pro stejný řádek (tj. stejný zákazník). Pokud je pravda, skript předpokládá, že zákazník upgradoval, a odešle e-mail. V opačném případě zkontroluje další podmínky (upomínky na vyúčtování nebo pravidelné upomínky faktur) a odešle příslušný email.if (částka faktury1 < Částka faktury2)"Děkujeme za upgrade"

Když se aktualizuje soubor Tabulek Google

Nyní se vyplatí probrat trochu jiný případ použití, kdy k tabulce mají přístup i jiní lidé než správce účtu. 

Předpokládejme, že náš account manager má den věnovaný setkání s klienty a zodpovězení jejich otázek. Klienti mají přístup k tabulce, kde mohou stručně popsat problém a zarezervovat si slot. 

Dobře, existují mnohem lepší způsoby, jak zpracovávat rezervace a dotazy klientů. Ale kvůli tutoriálu se tohoto přístupu budeme držet.

Krok 1

Nejprve musíme vytvořit tabulku. Jak je ukázáno níže, naše je docela jednoduchá a obsahuje pouze tři řádky s manažerem, časovým slotem a dotazem.

Krok 2

Dále potřebujete skripty Google ke spouštění e-mailů, kdykoli někdo aktualizuje list svým dotazem, čímž si zarezervuje slot. Zde je příklad. 

//@Proces funkce OnlyCurrentDocEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, předmět: "Nová rezervace -- časový úsek klienta", tělo: "Klient má na vás otázku." }); }

kopírovat

Abychom vám pomohli porozumět tomu, co se děje, vyplatí se probrat hlavní funkce. 

  • //@OnlyCurrentDoc – tato anotace signalizuje, že chcete, aby se skript spouštěl pouze v zadané tabulce Google. Odstranění anotace povolilo skript napříč vašimi ostatními soubory. 
  • funkce processEdit () – spouštěč (nastavíme v dalším kroku) spouští skript s touto funkcí. Jednoduše, funkce nastaví proces tak, aby dostal e-mail pokaždé, když někdo aktualizuje list.
  • (e) – tato anotace představuje objekt s údaji o úpravách. Má vlastnost rozsah, která signalizuje, že rozsah nebo buňka byla upravena. 
  • MailApp – objekt, který funkce používá k přenosu e-mailu. 

Než budete pokračovat, můžete otestovat list a kód. Pokud používáte vzorový list, stačí vyplnit jednu z buněk ve sloupci Dotaz a spusťte skript. E-mail by měl do vaší schránky dorazit okamžitě, ale mějte na paměti, že skript ještě nebyl automatizován.

Krok 3

Je čas nastavit a autorizovat spouštěč pro automatické odesílání e-mailů. V Apps Script klikněte na ikonu budíku v postranní nabídce. Poté klikněte na „…vytvořit nový spouštěč“. 

Ve vyskakovacím okně konfigurace spouštění vyberte následující kritéria.

  • zpracovatUpravit
  • Hlava
  • Z tabulky
  • Při úpravě

Poznámka: Není v pořádku, pokud ponecháte Nastavení oznámení o selhání ve výchozím nastavení, ale můžete to změnit že v případě potřeby. Neovlivní to celkové fungování spouštěče nebo skriptu. To se může týkat všech skriptů Google, které můžete chtít automatizovat. 

Klikněte na Uložit, autorizujte spouštěč ve svém účtu a uvidíte jej v  Seznam spouštěčů . Nezapomeňte také stisknout tlačítko Nasadit a aktivujte spouštěč. 

Nyní se můžete vrátit na list, vyplnit další buňku ve sloupci Dotaz a zkontrolovat, zda jste obdrželi automatické oznámení. 

Postranní poznámka: List můžete přizpůsobit svým preferencím, ale to znamená, že budete muset přizpůsobit i skript.

Tags: #AKO

[100 % vyriešené] Ako opraviť hlásenie „Chyba pri tlači“ v systéme Windows 10?

[100 % vyriešené] Ako opraviť hlásenie „Chyba pri tlači“ v systéme Windows 10?

V systéme Windows 10 sa zobrazuje správa o chybe tlače, potom postupujte podľa opráv uvedených v článku a uveďte tlačiareň do správnej cesty...

Jak zachytit a přehrát záznam Microsoft Teams

Jak zachytit a přehrát záznam Microsoft Teams

Schůzky můžete snadno znovu navštívit, pokud je zaznamenáte. Zde je návod, jak zachytit a přehrát záznam Microsoft Teams pro vaši příští schůzku.

Ako obnoviť predvolené aplikácie v systéme Android

Ako obnoviť predvolené aplikácie v systéme Android

Keď otvoríte súbor alebo kliknete na odkaz, vaše zariadenie so systémom Android vyberie predvolenú aplikáciu na jeho otvorenie. Pomocou tohto sprievodcu môžete obnoviť svoje predvolené aplikácie v systéme Android.

OPRAVENO: Chyba certifikátu Entitlement.diagnostics.office.com

OPRAVENO: Chyba certifikátu Entitlement.diagnostics.office.com

OPRAVENO: Chyba certifikátu Entitlement.diagnostics.office.com

Top 10 herních webů, které škola v roce 2022 neblokuje

Top 10 herních webů, které škola v roce 2022 neblokuje

Chcete-li zjistit nejlepší herní weby, které školy neblokují, přečtěte si článek a vyberte si nejlepší web s neblokovanými hrami pro školy, vysoké školy a práce

OPRAVENÉ: Tlačiareň v chybovom stave [HP, Canon, Epson, Zebra & Brother]

OPRAVENÉ: Tlačiareň v chybovom stave [HP, Canon, Epson, Zebra & Brother]

Ak čelíte problému s chybovým stavom tlačiarne na počítači so systémom Windows 10 a neviete, ako s ním zaobchádzať, opravte ho podľa týchto riešení.

Ako zálohovať Chromebook (2022)

Ako zálohovať Chromebook (2022)

Ak vás zaujíma, ako zálohovať Chromebook, máme pre vás riešenie. Viac o tom, čo sa zálohuje automaticky a čo nie, nájdete tu

Ako opraviť aplikáciu Xbox, ktorá sa neotvorí v systéme Windows 10 [RÝCHLE GUIDE]

Ako opraviť aplikáciu Xbox, ktorá sa neotvorí v systéme Windows 10 [RÝCHLE GUIDE]

Chcete opraviť aplikáciu Xbox, ktorá sa neotvorí v systéme Windows 10, potom postupujte podľa opráv, ako je povoliť aplikáciu Xbox zo služieb, resetovať aplikáciu Xbox, obnoviť balík aplikácií pre Xbox a ďalšie.

Co je LogiOptions.exe (UNICODE) a je proces bezpečný?

Co je LogiOptions.exe (UNICODE) a je proces bezpečný?

Pokud máte klávesnici a myš Logitech, uvidíte, že tento proces běží. Není to malware, ale není to nezbytný spustitelný soubor pro operační systém Windows.

Opravená chyba Java Update/Install Error 1603 ve Windows 10

Opravená chyba Java Update/Install Error 1603 ve Windows 10

Přečtěte si článek a zjistěte, jak opravit chybu Java Update 1603 ve Windows 10, vyzkoušejte opravy uvedené jednu po druhé a snadno opravte chybu 1603…