Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Trimiterea unui e-mail din Foi de calcul Google necesită utilizarea unui Script Google Apps. Dar nu vă faceți griji, dacă nu ați creat niciodată un singur script Google Apps înainte, trimiterea unui e-mail este foarte simplă.

În următorul tutorial, veți învăța cum să verificați valoarea unei celule în Foi de calcul Google . Dacă valoarea depășește o anumită limită de prag, puteți trimite automat un e-mail de alertă la orice adresă de e-mail doriți.

Există multe utilizări pentru acest script. Puteți primi o alertă dacă câștigurile zilnice din raportul dvs. de vânzări scad sub un anumit nivel. Sau puteți primi un e-mail dacă angajații dvs. raportează că au facturat clientului pentru prea multe ore în foaia de calcul de urmărire a proiectului.

Indiferent de aplicație, acest script este convingător. De asemenea, vă va economisi timpul necesar pentru a monitoriza manual actualizările foilor de calcul.

Pasul 1: Trimiterea unui e-mail cu Foi de calcul Google

Înainte de a putea crea un Script Google Apps pentru a trimite un e-mail din Foi de calcul Google , veți avea nevoie și de o adresă de e-mail Gmail, la care Google Apps Script o va accesa pentru a trimite e-mailurile dvs. de alertă.

De asemenea, va trebui să creați o nouă foaie de calcul care conține o adresă de e-mail.

Doar adăugați o coloană de nume și o coloană de e-mail și completați-le cu persoana care doriți să primiți e-mailul de alertă.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Acum că aveți o adresă de e-mail la care să trimiteți un e-mail de alertă, este timpul să vă creați scriptul.

Pentru a accesa editorul de scripturi, faceți clic pe Instrumente , apoi faceți clic pe Editor de scripturi .

Veți vedea o fereastră de script cu o funcție implicită numită  myFunction() . Redenumiți-l în SendEmail() .

Apoi, lipiți următorul cod în cadrul funcției 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);

Iată cum funcționează acest cod:

  • getRange și getValues ​​extrag valoarea din celula specificată în metoda getRange.
  • mesajul var și subiectul var definesc textul care va crea e-mailul de alertă.
  • Funcția MailApp.sendEmail realizează în sfârșit funcția de trimitere a e-mailului Google Scripts folosind contul dvs. Google conectat.

Salvați scriptul făcând clic pe pictograma discului , apoi rulați-l făcând clic pe pictograma Run (săgeata dreapta).

Rețineți că Google Script are nevoie de permisiunea de a vă accesa contul Gmail pentru a trimite e-mailul. Deci, prima dată când rulați scriptul, este posibil să vedeți o alertă ca mai jos.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Faceți clic pe Examinare permisiuni și veți vedea un alt ecran de alertă pe care va trebui să îl ocoliți.

Acest ecran de alertă se datorează faptului că scrieți un Script Google personalizat care nu este înregistrat ca unul oficial.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Doar faceți clic pe Avansat și apoi faceți clic pe linkul Accesați Trimite e-mail (nesigur) .

Va trebui să faci asta o singură dată. Scriptul dvs. va rula, iar adresa de e-mail pe care ați specificat-o în foaia de calcul va primi un e-mail ca cel de mai jos.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Pasul 2: Citirea unei valori dintr-o celulă în Foi de calcul Google

Acum că ați scris cu succes un script Google Apps care poate trimite un e-mail de alertă, este timpul să faceți acel e-mail de alertă mai funcțional.

Următorul pas pe care îl veți învăța este cum să citiți o valoare a datelor dintr-o foaie de calcul Google, să verificați valoarea și să emiteți un mesaj pop-up dacă acea valoare este peste sau sub o limită superioară.

Înainte de a putea face acest lucru, va trebui să creați o altă foaie în foaia de calcul Google cu care lucrați. Numiți această nouă foaie „MyReport”.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Rețineți că celula D2 este cea pe care veți dori să o verificați și să o comparați. Imaginează-ți că vrei să știi în fiecare lună dacă vânzările tale totale au scăzut sub 16.000 USD.

Să creăm Google Apps Script care face asta.

Reveniți în fereastra Editor de scripturi făcând clic pe Instrumente și apoi pe Editor de scripturi .

Dacă utilizați aceeași foaie de calcul, veți avea în continuare funcția  SendEmail() acolo. Tăiați acel cod și inserați-l în Notepad. Veți avea nevoie de el mai târziu.

Lipiți următoarea funcție în fereastra de cod.

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!');="" }="">

Cum funcționează acest cod:

  • Încărcați valoarea din celula D2 în variabila lunaVânzări .
  • Declarația IF compară vânzările lunare din celula D2 cu 16.000 USD
  • Dacă valoarea este peste 16.000, codul va declanșa o casetă de mesaj în browser cu o alertă.

Salvați acest cod și rulați-l. Dacă funcționează corect, ar trebui să vedeți următorul mesaj de alertă în browser.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

Acum că aveți un script Google Apps care poate trimite o alertă prin e-mail și un alt script care poate compara o valoare dintr-o foaie de calcul, sunteți gata să le combinați pe cele două și să trimiteți o alertă în loc să declanșați un mesaj de alertă.

Pasul 3: Pune totul împreună

Acum este timpul să combinați cele două scripturi pe care le-ați creat într-un singur script.

În acest moment, ar trebui să aveți o foaie de calcul cu o filă numită Sheet1 care conține destinatarul e-mailului de alertă. Cealaltă filă numită MyReport conține toate informațiile despre vânzări.

Înapoi în Editorul de scripturi, este timpul să puneți în practică tot ce ați învățat până acum.

Înlocuiește tot codul din editorul de scripturi cu cele două funcții ale tale, editate așa cum se arată aici.

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);="" }="">

Observați modificările aici.

În interiorul instrucțiunii IF, inserați scriptul SendEmail în cadrul funcției CheckSales() în parantezele instrucțiunii if.

În al doilea rând, concatenați variabila lunaVânzări la sfârșitul mesajului de e-mail folosind caracterul + .

Singurul lucru care rămâne de făcut este să declanșeze funcția CheckSales() în fiecare lună.

Pentru a face acest lucru, în editorul de script:

  1. Faceți clic pe elementul de meniu Editare , apoi faceți clic pe Declanșatoarele proiectului curent .
  2. În partea de jos a ecranului, faceți clic pe creați un nou declanșator .
  3. Selectați funcția CheckSales pentru a rula.
  4. Schimbați Selectați sursa evenimentului în funcție de timp .
  5. Schimbați  Selectați tipul de declanșare bazat pe timp la Cronometru lunar .

Faceți clic pe Salvare pentru a finaliza declanșatorul.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

În fiecare lună, noul dvs. script va rula și va compara suma totală a vânzărilor lunare din celula D2 cu 16.000 USD.

Dacă este mai puțin, va trimite un e-mail de alertă care vă va anunța despre vânzările lunare scăzute.

Utilizați Foi de calcul Google pentru a trimite un e-mail pe baza valorii celulei

După cum puteți vedea, Google Apps Scripts include o mulțime de funcționalități într-un pachet mic. Cu doar câteva linii simple de cod, puteți face lucruri destul de uimitoare.

Dacă doriți să experimentați mai mult, încercați să adăugați limita de comparație de 16.000 USD într-o altă celulă din foaia de calcul și apoi citiți-o în script înainte de a face comparația. În acest fel, puteți modifica limita doar schimbând valoarea din foaie.

Modificând codul și adăugând noi blocuri de cod, puteți construi pe baza acestor lucruri simple pe care le învățați pentru a crea în cele din urmă niște Scripturi Google uimitoare.

Automatizarea procesului

Până acum, bine, dar scriptul de mai sus se va rula manual numai dacă nu setăm niciun declanșator. Din fericire, Google a făcut automatizarea declanșată ușor de configurat. Iată pașii. 

În editorul Apps Script, dați clic pe pictograma Declanșatoare din bara laterală din stânga (pare un ceas mic).

Faceți clic pe linkul creați un nou declanșatorr sau pe Adăugați declanșator din colțul din dreapta jos al paginii Declanșatoare.

În meniul derulant Alegeți ce funcție să rulați , selectați trimite e-mailuri< o funcție i=4> .

În meniul drop-down Selectați sursa evenimentului , alegeți Drivat în timp.

În meniul drop-down Selectați tipul de declanșare în funcție de timp , alegeți frecvența dorită (de ex., Cronometru zi pentru e-mailurile zilnice, Cronometru săptămânal pentru e-mailurile săptămânale etc.).

Dacă este cazul, alegeți intervalul de timp dorit sau ziua săptămânii.

Faceți clic pe Salvați pentru a crea declanșatorul.

După salvare, dați clic pe butonul Implementați din colțul din dreapta sus și urmați instrucțiunile pentru a eticheta și a defini implementarea. Va trebui să acordați permisiuni de automatizare pentru a rula și același lucru este valabil și pentru scriptul în sine.  

În ceea ce privește declanșatorul dat, deoarece exemplul nostru este despre trimiterea mementourilor de factură, presupunem că acestea sunt lunare și este adecvat să le trimitem în fiecare zi de 1 a lunii între orele 13:00 și 14:00. Dar, desigur, puteți schimba frecvența și timpul în funcție de nevoile dvs. 

Cum se trimite un e-mail cu un atașament

Pentru a vă arăta cum să trimiteți e-mailuri cu atașamente, vom reutiliza foaia exemplară cu mementouri de factură și vom refactoriza fragmentul pentru a include atașamente. Acum, începem cu funcția, iar șablonul de e-mail apare mai târziu în cod. trimite mementouri prin e-mail

Ar trebui să subliniem că fragmentul de mai jos extrage atașamente de e-mail dintr-un dosar Google Drive, unde este esențial să includeți ID-ul dosarului și să respectați convenția de denumire dată. Mai multe despre asta în Să descompunem secțiunea de cod

function sendEmailReminders() { // Obțineți foaia activă var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Obține intervalul de date (excluzând rândul antetului) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Obține valorile din intervalul de date var data = dataRange.getValues(); // Buclă prin rândurile de date pentru (var i = 0; i < data.length; i++) { var row = data[i]; // Obține valorile din fiecare coloană var businessName = row[0]; var email = row[1]; var invoiceNumber = row[2]; var invoiceAmount = row[3]; var dueDate = rând[4]; var subiect = rând[5]; // Email body var emailBody = "Dragă " + businessName + ",\n\n" + "Acesta este un memento că Factura #" + invoiceNumber + " pentru $" + invoiceAmount + " scade pe " + data scadentă + ".\n" + "Vă rugăm să găsiți factura atașată.\n\n" + "Vă mulțumim pentru atenția promptă acordată acestei probleme."; // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } // Trimite e-mailul cu atașamentul MailApp.sendEmail({ la: email, subiect: subiect, body: emailBody, attachments: [invoiceFile] }); } }

Să defalcăm codul

1. Definiți funcția:sendEmailReminders

funcția sendEmailReminders() {

Linia declară o funcție numită , care va conține codul pentru a trimite mementouri prin e-mail cu atașamente.sendEmailReminders

2. Obțineți foaia activă:

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

Linia preia foaia activă din documentul Foi de calcul Google deschis în prezent.

3. Obțineți intervalul de date (excluzând rândul antetului):

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

Această linie primește intervalul de date din foaie, excluzând rândul antetului. Începe de la al doilea rând (rândul 2) și prima coloană (coloana 1) și se extinde până la ultimul rând și ultima coloană a foii.

Notă laterală: Când creați foaia personalizată, trebuie să o modificați pentru a se potrivi cu foaia dvs. dataRange

4. Obțineți valorile din intervalul de date:

var data = dataRange.getValues();

Această linie preia valorile (conținutul) din intervalul de celule definit în pasul anterior.

5. Parcurgeți în buclă rândurile de date:

pentru (var i = 0; i < data.length; i++) { var row = data[i];

Această buclă iterează prin fiecare rând din matrice. Variabila reprezintă rândul curent de date în fiecare iterație.fordatarow

6. Obțineți valorile din fiecare coloană:

var businessName = row[0]; var email = row[1]; var invoiceNumber = row[2]; var invoiceAmount = row[3]; var dueDate = rând[4]; var subiect = rând[5];

Liniile de mai sus extrag valorile din fiecare coloană din rândul curent de date. Fiecare valoare este atribuită mai târziu unei variabile pentru o referire ușoară în script. Valorile date sunt personalizate pentru fișa noastră exemplară. 

7. Creați corpul e-mailului:

var emailBody = "Dragă " + businessName + ",\n\n" + "Acesta este un memento că Factura #" + invoiceNumber + " pentru $" + invoiceAmount + " scade pe " + data scadentă + ".\n" + "Vă rugăm să găsiți factura atașată.\n\n" + "Vă mulțumim pentru atenția promptă acordată acestei probleme.";

Codul construiește corpul e-mailului folosind valorile extrase din foaie. Corpul e-mailului este un șir care include numele companiei, numărul facturii, suma facturii și data scadenței.

8. Obțineți fișierul de factură corespunzător:

var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { console.error("Fișierul facturii nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; }

Aceste linii preiau fișierul de factură asociat rândului curent. 

În primul rând, folderul cu fișierul facturii este accesat folosind ID-ul său de folder. Asigurați-vă că îl înlocuiți cu ID-ul real al dosarului. YOUR_FOLDER_ID_HERE

Rețineți că convenția de denumire din exemplul nostru este , iar factura reală se numește „123456.pdf”. Dacă fișierele atașate sunt denumite diferit, va trebui să actualizați formatarea. (invoiceNumber + '.pdf')

Apoi, scriptul caută un fișier cu același nume cu numărul facturii (presupunând că fișierul este în format PDF). 

Dacă fișierul este găsit, acesta este atribuit variabilei; în caz contrar, scriptul înregistrează un mesaj de eroare și trece la următorul row.invoiceFile

9. Trimite e-mailul cu atașamentul:

MailApp.sendEmail({ la: e-mail, subiect: subiect, corp: emailBody, atașamente: [invoiceFile] });

Această linie trimite corpul și atașamentele de e-mail și iată rezultatele pe care ar trebui să le obțineți. De asemenea, toți pașii de automatizare se aplică așa cum a fost descris anterior și este logic să păstrați declanșatorul lunar, deoarece este vorba despre trimiterea mementourilor de factură. 

Trimiteți un e-mail HTML cu GSheets

Pentru a trimite un e-mail HTML, puteți face câteva modificări, destul de simple, la scriptul descris anterior. Iată-l: 

function sendEmailReminders() { // Obțineți foaia activă var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Obține intervalul de date (excluzând rândul antetului) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Obține valorile din intervalul de date var data = dataRange.getValues(); // Buclă prin rândurile de date pentru (var i = 0; i < data.length; i++) { var row = data[i]; // Obține valorile din fiecare coloană var businessName = row[0]; var email = row[1]; var invoiceNumber = row[2]; var invoiceAmount = row[3]; var dueDate = rând[4]; var subiect = rând[5]; // Corpul e-mailului HTML var emailBodyHtml = "<p>Dragă " + businessName + ",</p>" + "<p>Acesta este un memento că Factura #" + invoiceNumber + " pentru $" + invoiceAmount + " scade pe " + data scadentă + ".</p>" + "<p>Vă rugăm să găsiți factura atașată.</p>" + "<p>Vă mulțumim pentru atenția promptă acordată acestei probleme.</p>"; // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } // Trimite e-mailul cu atașamentul MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }

În această versiune, textul simplu este înlocuit cu o variabilă care conține conținut în format HTML. emailBodyemailBodyHtml

Când apelați funcția, proprietatea body este, de asemenea, înlocuită cu proprietatea, care va trimite e-mailul ca e-mail HTML.MailApp.sendEmail()htmlBody

Note laterale: 

Utilizăm în loc de în script de dragul confortului. Oricare dintre opțiuni ar funcționa, deși cu siguranță este mai lizibilă. Oricum, nu ezitați să reformatați scriptul și să înlocuiți operatorul de concatenare cu substituenți la interpolarea șirurilor. varconstconst${expresie}

De asemenea, niciunul dintre scripturi nu include funcții, deoarece acestea nu erau necesare pentru exemplele noastre. Dar, desigur, este posibil să adăugați și chiar să automatizați cu aceste tipuri de scripturi. bccbcc

În cele din urmă, puteți condimenta lucrurile adăugând stiluri CSS personalizate; vedeți funcția actualizată de mai jos. var emailBodyHtml =

// Corpul e-mailului HTML cu stiluri CSS var emailBodyHtml = "<html><head><style>" + "corp {familie de fonturi: Arial, sans-serif;}" + "p {dimensiunea fontului: 14px;}" + ".invoice-info {font-weight: bold; culoare: #4a4a4a;}" + "</style></head><corp>" + "<p>Dragă <span class='informații-factură'>" + businessName + "</span>,</p>" + "<p>Acesta este un memento că #<span class='invoice-info'>" + invoiceNumber + "</span> pentru $<span class='invoice-info'>" + invoiceAmount + "</span> scade la <span class='invoice-info'>" + data scadentă + "</span>.</p>" + "<p>Vă rugăm să găsiți factura atașată.</p>" + "<p>Vă mulțumim pentru atenția promptă acordată acestei probleme.</p>" + "</body></html>";

Sfaturi pro: 

  • Mergeți ușor cu , unii furnizori de căsuțe poștale s-ar putea să nu accepte și să redă corect e-mailurile puternic stilizate sau deloc. <stil>
  • Utilizați Testarea e-mailurilor Mailtrap pentru a vedea cât de mult acceptă furnizorii de cutii poștale e-mailurile dvs. HTML. 
  • Pentru a te stresa din nou, Dacă trebuie să trimiți la un volum, cel mai bine este întotdeauna să folosești un MTA adecvat în locul funcției. trimite e-mail
  • În această notă, ține cont de limitările contului tău Gmail. Acestea sunt diferite pentru Google Workspace și/sau contul dvs. privat. 

Cum să trimiți e-mailuri de declanșare din Foi de calcul Google?

Când o celulă atinge o anumită valoare

Vă vom arăta cum să trimiteți un e-mail automat bazat pe valoarea unei celule. În exemplul nostru, factura va fi trimisă atunci când celula Valoarea facturii ajunge la „0”, indicând un client retras. 

Valoarea dată a celulei declanșează un e-mail personalizat de suspendare pentru a contacta imediat clientul. Și din nou, pașii de automatizare rămân aceiași, puteți folosi în continuare declanșatorul lunar pentru aceste e-mailuri. 

Rețineți că scriptul este același pe care l-am folosit pentru a trimite e-mail-uri și atașamente HTML. Dar are un alt nivel de funcționalitate pentru a introduce logica condiționată descrisă. Iată codul. 

function sendEmailReminders() { // Obțineți foaia activă var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Obține intervalul de date (excluzând rândul antetului) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Obține valorile din intervalul de date var data = dataRange.getValues(); // Buclă prin rândurile de date pentru (var i = 0; i < data.length; i++) { var row = data[i]; // Obține valorile din fiecare coloană var businessName = row[0]; var email = row[1]; var invoiceNumber = row[2]; var invoiceAmount = row[3]; var dueDate = rând[4]; var subiect = rând[5]; // Determinați corpul e-mailului pe baza sumei facturii var emailBodyHtml; if (invoiceAmount == 0) { // Renunțați subiectul e-mailului clientului = "Renunțați la notificarea clientului"; emailBodyHtml = "<html><head><style>" + "corp {familie de fonturi: Arial, sans-serif;}" + "p {dimensiunea fontului: 14px;}" + ".invoice-info {font-weight: bold; culoare: #4a4a4a;}" + "</style></head><corp>" + "<p>Dragă " + businessName + ",</p>" + "<p>Am observat că suma facturii dvs. este de 0 USD. Ne pare rău să văd că plecați și am aprecia orice feedback cu privire la motivul pentru care ați decis să întrerupeți utilizarea serviciilor noastre.</p>" + "<p>Dacă putem face ceva pentru a ne îmbunătăți serviciile sau pentru a vă recâștiga afacerea, vă rugăm să ne anunțați.</p>" + "<p>Vă mulțumim pentru afacerea dvs. trecută.</p>" + "</body></html>"; } else { // E-mail cu factură obișnuită emailBodyHtml = "<html><head><style>" + "corp {familie de fonturi: Arial, sans-serif;}" + "p {dimensiunea fontului: 14px;}" + ".invoice-info {font-weight: bold; culoare: #4a4a4a;}" + "</style></head><corp>" + "<p>Dragă <span class='informații-factură'>" + businessName + "</span>,</p>" + "<p>Acesta este un memento că #<span class='invoice-info'>" + invoiceNumber + "</span> pentru $<span class='invoice-info'>" + invoiceAmount + "</span> scade la <span class='invoice-info'>" + data scadentă + "</span>.</p>" + "<p>Vă rugăm să găsiți factura atașată.</p>" + "<p>Vă mulțumim pentru atenția promptă acordată acestei probleme.</p>" + "</body></html>"; } // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.Următorul(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } // Trimite e-mailul cu atașamentul MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }

Până la ruptura de cod 

Rețineți că ne concentrăm doar pe ceea ce este în funcție pentru a evita repetarea a ceea ce a fost deja descris. emailBodyHtml

Partea actualizată a codului determină conținutul corpului de e-mail pe baza sumei facturii. Dacă suma facturii este , se presupune că este un client renunțat și este utilizat un alt șablon de e-mail. Iată o defalcare a codului: „0”

var emailBodyHtml;

Acesta declară o variabilă numită și stochează conținutul corpului e-mailului. Și inițial a rămas undefined.emailBodyHtml

dacă (invoiceAmount == 0) { ... }

Extrasul verifică dacă suma facturii este 0. Dacă este, codul din acolade va fi executat. Acest bloc conține șablonul de e-mail al clientului de retragere.if(`{}`)

subiect = "Renunță la notificarea clientului";

Linia setează subiectul e-mailului la pentru clienții renunțați."Notificarea renunțării la clienți"

emailBodyHtml = "<html><head><style>" + ...

 Linia setează valoarea variabilei la șablonul de e-mail al clientului de retragere. Șablonul este un șir HTML cu stiluri CSS definite în secțiune. Corpul e-mailului conține substituenți pentru numele companiei și un mesaj către client.emailBodyHtml<head>

} altfel { ... }

 Blocarea este executată atunci când valoarea facturii nu este 0. Setează variabila la șablonul obișnuit de e-mail al facturii. Șablonul de e-mail este un șir HTML cu stiluri CSS definite în secțiune. Corpul e-mailului conține substituenți pentru numele companiei, numărul facturii, suma facturii și data scadenței.elseemailBodyHtml<head>

Folosind această logică condiționată, scriptul trimite un alt corp de e-mail, în funcție de faptul că suma facturii este (client renunțat) sau diferită de zero (factură obișnuită). 0

Când valoarea celulei se modifică

Acum, vom lua același script folosit mai sus și îl vom extinde pentru a acoperi un alt caz de utilizare - un client face upgrade, iar managerul de cont trebuie să trimită un e-mail de „Mulțumire” cu o factură. 

Pentru a explica, ideea este că în fiecare lună managerul de cont are o nouă Fișă (Fișa 2 în exemplul nostru) cu acreditările clienților. 

Codul va compara acum cele două foi și va trimite un e-mail automat de mulțumire, în loc de e-mailul obișnuit al facturii, clienților care au făcut upgrade ( Suma facturii lor). a> este mai mare în comparație cu cea anterioară). 

De asemenea, nu este nevoie să atingeți e-mailul de retragere, deoarece există șansa ca cineva să decidă să nu mai folosească serviciul nostru imaginar. Iată scenariul.

function sendEmailReminders() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); var dataRange1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var dataRange2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues(); pentru (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = data2[i]; var businessName = row1[0]; var email = row1[1]; var invoiceNumber = row1[2]; var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(',', 39;.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.')); if (isNaN(invoiceAmount1) || isNaN(invoiceAmount2)) { console.error("Sume facturi nevalide pentru afacere: " + businessName + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2 ); continua; } var dueDate = row1[4]; var subiect; var emailBodyHtml; if (invoiceAmount1 < invoiceAmount2) { console.log("Trimiterea e-mailului 'Vă mulțumim pentru actualizare' la " + email + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); subiect = "Multumesc pentru actualizare"; emailBodyHtml = "<html><body>" + "<p>Dragă " + businessName + ",</p>" + "<p>Vă mulțumim pentru actualizare! Apreciem afacerea dvs. și așteptăm cu nerăbdare să vă servim.</p>" + "<p>Salut,</p>" + "<p>Compania dvs.</p>" + "</body></html>"; MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Trimiterea e-mailului 'Churn notificarea clientului' la " + email + ". invoiceAmount1: " + invoiceAmount1); subiect = "Renunță la notificarea clientului"; emailBodyHtml = "<html><head><style>" + "corp {familie de fonturi: Arial, sans-serif;}" + "p {dimensiunea fontului: 14px;}" + ".invoice-info {font-weight: bold; culoare: #4a4a4a;}" + "</style></head><corp>" + "<p>Dragă " + businessName + ",</p>" + "<p>Am observat că suma facturii dvs. este de 0 USD. Ne pare rău să văd că plecați și am aprecia orice feedback cu privire la motivul pentru care ați decis să întrerupeți utilizarea serviciilor noastre.</p>" + "<p>Dacă putem face ceva pentru a ne îmbunătăți serviciile sau pentru a vă recâștiga afacerea, vă rugăm să ne anunțați.</p>" + "<p>Vă mulțumim pentru afacerea dvs. trecută.</p>" + "</body></html>"; MailApp.sendEmail({ to: email, subject: subject, htmlBody:emailBodyHtml }); } else { console.log("Trimiterea e-mailului „Memento de factură” la „+ e-mail + „. invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); subiect = "Memento factură"; emailBodyHtml = "<html><head><style>" + "corp {familie de fonturi: Arial, sans-serif;}" + "p {dimensiunea fontului: 14px;}" + ".invoice-info {font-weight: bold; culoare: #4a4a4a;}" + "</style></head><corp>" "<p>Stimată <span class='informații-factură'>" + businessName + "</span>,</p>" + "<p>Acesta este un memento că #<span class='invoice-info'>" + invoiceNumber + "</span> pentru $<span class='invoice-info'>" + invoiceAmount1 + "</span> scade la <span class='invoice-info'>" + data scadentă + "</span>.</p>" + "<p>Vă rugăm să găsiți factura atașată.</p>" + "<p>Vă mulțumim pentru atenția promptă acordată acestei probleme.</p>" + "</body></html>"; // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml, atașamente: [invoiceFile] }); } } }</p>" + "</body></html>"; // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml, atașamente: [invoiceFile] }); } } }</p>" + "</body></html>"; // Atașați factura corespunzătoare - Trebuie să furnizați ID-ul corect al folderului în care sunt stocate facturile dvs. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Presupunând că fișierele de factură sunt în format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Dacă fișierul de factură nu este găsit, puteți sări peste acest rând sau puteți înregistra o eroare console.error("Fișierul de factură nu a fost găsit pentru numărul facturii: " + invoiceNumber); continua; } MailApp.sendEmail({ la: email, subiect: subiect, htmlBody: emailBodyHtml, atașamente: [invoiceFile] }); } } }

Până la ruptura de cod 

1. Scriptul începe prin obținerea de referințe atât la Sheet1 cât și Sheet2.

var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

2. Apoi preia datele din ambele foi, începând cu al doilea rând pentru a exclude anteturile.

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

3. Scriptul iterează peste rândurile din ambele foi (presupunând că numărul de rânduri este același în ambele foi). Acesta compară sumele facturilor din Sheet1 și Sheet2 pentru fiecare rând corespunzător.

pentru (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = data2[i]; // Obține sumele facturilor din ambele foi var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));

Copie

4. Scriptul verifică apoi condițiile de trimitere a diferitelor tipuri de e-mailuri pe baza comparației sumelor facturilor din Sheet1 și Sheet2.

if (invoiceAmount1 < invoiceAmount2) { // Trimiteți „Vă mulțumim pentru actualizare” email } else if (invoiceAmount1 == 0) { // Trimiteți "Churn client notificare" e-mail } else { // Trimite "Memento de factură" e-mail }

Copie

Comparația cheie este , care verifică dacă suma facturii din Sheet1 este mai mică decât valoarea facturii din Sheet2 pentru același rând (adică același client). Dacă este adevărat, scriptul presupune că clientul a făcut upgrade și trimite un e-mail. În caz contrar, verifică alte condiții (mementouri de renunțare sau obișnuite de factură) și trimite e-mailul corespunzător.if (invoiceAmount1 < invoiceAmount2)"Mulțumesc pentru actualizare"

Când un fișier Foi de calcul Google este actualizat

Acum, merită să discutăm despre un caz de utilizare puțin diferit, în care alte persoane decât managerul de cont au acces la foaia de calcul. 

Să presupunem că managerul nostru de cont are o zi dedicată întâlnirii cu clienții și răspunderii la întrebările acestora. Clienții au acces la o foaie de calcul unde pot descrie pe scurt problema și pot rezerva un slot. 

Bine, există modalități mult mai bune de a gestiona rezervările și întrebările clienților. Dar vom rămâne la această abordare de dragul tutorialului.

Pasul 1

În primul rând, trebuie să creăm un tabel. După cum se arată mai jos, al nostru este destul de simplu, conținând doar trei rânduri cu Manager, Interogare de timp și Interogare.

Pasul 2

Apoi, aveți nevoie de scripturi Google pentru a declanșa e-mailuri oriunde cineva actualizează foaia cu interogarea sa, rezervând astfel un slot. Iată un exemplu. 

//@OnlyCurrentDoc function processEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, subiect: "Rezervare nouă -- interval orar client", body: "Un client are o întrebare pentru dvs." }); }

Copie

Pentru a vă ajuta să înțelegeți ce se întâmplă, merită să discutați despre funcțiile principale. 

  • //@OnlyCurrentDoc – această adnotare indică faptul că doriți ca scriptul să ruleze numai în foaia Google specificată. Eliminarea adnotării a activat scriptul pentru celelalte fișiere ale dvs. 
  • funcție processEdit () – un declanșator (vom configura în pasul următor) rulează scriptul cu această funcție. Pur și simplu, funcția setează procesul pentru a primi un e-mail de fiecare dată când cineva actualizează foaia.
  • (e) – această adnotare reprezintă obiectul cu date despre editări. Are o proprietate interval pentru a semnala că un interval sau o celulă a fost editat. 
  • MailApp – un obiect pe care funcția îl folosește pentru a transmite e-mailul. 

Înainte de a trece mai departe, puteți testa foaia și codul. Dacă utilizați foaia exemplară, doar completați una dintre celulele de sub coloana Interogare și rulați scriptul. E-mailul ar trebui să ajungă imediat în căsuța dvs. de e-mail, dar rețineți că scriptul nu a fost încă automatizat.

Pasul 3

Este timpul să setați și să autorizați un declanșator pentru a trimite automat e-mailuri. În Apps Script, faceți clic pe pictograma ceas cu alarmă din meniul lateral. Apoi, faceți clic pe „...creați un nou declanșator”. 

În fereastra pop-up de configurare a declanșatorului, selectați următoarele criterii.

  • procesEdit
  • Cap
  • Din foaia de calcul
  • La editare

Notă: Este în regulă dacă păstrați Setările de notificare de eșec în mod prestabilit, dar puteți modifica că dacă este necesar. Nu va afecta funcționarea generală a declanșatorului sau a scriptului. Acest lucru se poate aplica oricărui dintre scripturile Google pe care ați putea dori să le automatizați. 

Dați clic pe Salvați, autorizați declanșatorul în contul dvs. și îl veți vedea în  Lista de declanșatoare . De asemenea, asigurați-vă că apăsați butonul Implementați pentru a activa declanșatorul. 

Acum, puteți reveni la foaie, puteți completa o altă celulă în coloana Interogare și puteți verifica dacă ați primit notificarea automată. 

Notă laterală: Puteți personaliza foaia în funcție de preferințele dvs., dar aceasta înseamnă că va trebui să personalizați și scriptul.

Tags: #HOW-TO

Ghimbir 2.7.53.0

Ghimbir 2.7.53.0

Ginger este un corector gratuit de ortografie și gramatică.

Blocuri

Blocuri

Blocuri este un joc intelectual pentru elevii clasei a III-a de școală elementară pentru a-și exersa abilitățile de detectare și ochi și este inclus de profesori în programul de suport didactic IT.

Prezi 6.26

Prezi 6.26

Prezi este o aplicație gratuită care vă permite să creați prezentări digitale, atât online, cât și offline.

Mathway

Mathway

Mathway este o aplicație foarte utilă care vă poate ajuta să rezolvați toate acele probleme de matematică care necesită un instrument mai complex decât calculatorul încorporat al dispozitivului dvs.

Adobe Presenter

Adobe Presenter

Adobe Presenter este un software de e-Learning lansat de Adobe Systems, disponibil pe platforma Microsoft Windows ca plug-in Microsoft PowerPoint.

Tucan 2.3.0

Tucan 2.3.0

Toucan este o platformă tehnologică educațională. Vă permite să învățați o nouă limbă în timp ce navigați pe site-uri web comune, de zi cu zi.

ENetViet 24.2

ENetViet 24.2

eNetViet este o aplicație care ajută la conectarea părinților cu școala în care învață copiii lor, astfel încât aceștia să poată înțelege clar situația actuală de învățare a copilului lor.

Duolingo

Duolingo

Duolingo - Învață limbi străine gratuit, sau pur și simplu Duolingo, este un program educațional care îți permite să înveți și să exersezi multe limbi diferite.

Tastare rapidă

Tastare rapidă

RapidTyping este un instrument de instruire la tastatură convenabil și ușor de utilizat, care vă va ajuta să vă îmbunătățiți viteza de tastare și să reduceți erorile de ortografie. Cu lecții organizate pentru mai multe niveluri diferite, RapidTyping vă va învăța cum să scrieți sau să îmbunătățiți abilitățile existente.

MathType 7.4.10.53

MathType 7.4.10.53

MathType este un software interactiv de ecuații de la dezvoltator Design Science (Dessci), care vă permite să creați și să adnotați notații matematice pentru procesarea de text, prezentări, eLearning etc. Acest editor este folosit și pentru crearea documentelor TeX, LaTeX și MathML.