Gember 2.7.53.0
Ginger is een gratis spelling- en grammaticacontrole.
Voor het verzenden van een e-mail vanuit Google Spreadsheets is het gebruik van een Google Apps Script vereist. Maar maak je geen zorgen, als je nog nooit een enkel Google Apps-script hebt gemaakt, is het verzenden van een e-mail heel eenvoudig.
In de volgende zelfstudie leert u hoe u de waarde van een cel in Google Spreadsheets kunt controleren . Als de waarde een bepaalde drempelwaarde overschrijdt, kunt u automatisch een waarschuwings-e-mail sturen naar elk gewenst e-mailadres.
Er zijn veel toepassingen voor dit script. U kunt een waarschuwing ontvangen als de dagelijkse inkomsten in uw verkooprapport onder een bepaald niveau zakken. Of u kunt een e-mail krijgen als uw werknemers melden dat ze de klant te veel uren hebben gefactureerd in uw spreadsheet voor het volgen van projecten.
Ongeacht de toepassing, dit script is overtuigend. Het bespaart u ook de tijd om uw spreadsheetupdates handmatig te controleren.
Stap 1: Een e-mail verzenden met Google Spreadsheets
Voordat u een Google Apps Script kunt maken om een e-mail te verzenden vanuit Google Spreadsheets , heeft u ook een Gmail-e-mailadres nodig, waartoe Google Apps Script toegang heeft om uw e-mailmeldingen te verzenden.
U moet ook een nieuwe spreadsheet maken die een e-mailadres bevat.
Voeg gewoon een naamkolom en een e-mailkolom toe en vul deze in met de persoon die u de waarschuwingse-mail wilt ontvangen.
Nu je een e-mailadres hebt om een waarschuwingse-mail naar te sturen, is het tijd om je script te maken.
Om naar de scripteditor te gaan, klikt u op Extra en vervolgens op Scripteditor .
U ziet een scriptvenster met een standaardfunctie genaamd myFunction() . Hernoem dit naar SendEmail() .
Plak vervolgens de volgende code in de functie 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);
Zo werkt deze code:
Sla het script op door op het schijfpictogram te klikken en voer het vervolgens uit door op het pictogram Uitvoeren (pijl naar rechts) te klikken.
Houd er rekening mee dat Google Script toestemming nodig heeft om toegang te krijgen tot uw Gmail-account om de e-mail te verzenden. Dus de eerste keer dat u het script uitvoert, ziet u mogelijk een waarschuwing zoals hieronder.
Klik op Machtigingen bekijken en u ziet een ander waarschuwingsscherm dat u moet omzeilen.
Dit waarschuwingsscherm is omdat u een aangepast Google-script schrijft dat niet als officieel is geregistreerd.
Klik gewoon op Geavanceerd en klik vervolgens op de link Ga naar SendEmail (onveilig) .
U hoeft dit maar één keer te doen. Uw script wordt uitgevoerd en het e-mailadres dat u in uw spreadsheet hebt opgegeven, ontvangt een e-mail zoals hieronder.
Stap 2: Een waarde uit een cel lezen in Google Spreadsheets
Nu u met succes een Google Apps Script heeft geschreven dat een waarschuwingse-mail kan verzenden, is het tijd om die waarschuwingse-mail functioneler te maken.
De volgende stap die u leert, is hoe u een gegevenswaarde uit een Google-spreadsheet kunt lezen, de waarde kunt controleren en een pop-upbericht kunt weergeven als die waarde boven of onder een bovengrens ligt.
Voordat u dit kunt doen, moet u een ander blad maken in de Google Spreadsheet waarmee u werkt. Noem dit nieuwe blad 'MijnRapport'.
Houd er rekening mee dat cel D2 degene is die u wilt controleren en vergelijken. Stel je voor dat je elke maand wilt weten of je totale omzet onder de $ 16.000 is gedaald.
Laten we het Google Apps Script maken dat dat doet.
Ga terug naar uw Script Editor-venster door op Tools en vervolgens op Script Editor te klikken .
Als u dezelfde spreadsheet gebruikt, heeft u daar nog steeds de functie SendEmail() . Knip die code en plak deze in Kladblok. Je hebt het later nodig.
Plak de volgende functie in het codevenster.
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!');="" }="">
Hoe deze code werkt:
Sla deze code op en voer deze uit. Als het correct werkt, zou u het volgende waarschuwingsbericht in uw browser moeten zien.
Nu u een Google Apps Script heeft dat een e-mailwaarschuwing kan verzenden en een ander script dat een waarde uit een spreadsheet kan vergelijken, bent u klaar om de twee te combineren en een waarschuwing te verzenden in plaats van een waarschuwingsbericht te activeren.
Stap 3: Alles samenbrengen
Nu is het tijd om de twee scripts die u hebt gemaakt te combineren in één script.
Op dit punt zou u een spreadsheet moeten hebben met een tabblad met de naam Blad1 dat de ontvanger van de waarschuwingsmail bevat. Het andere tabblad genaamd MyReport bevat al uw verkoopinformatie.
Terug in de Script Editor is het tijd om alles wat je tot nu toe hebt geleerd in de praktijk te brengen.
Vervang alle code in de scripteditor door uw twee functies, bewerkt zoals hier wordt weergegeven.
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);="" }="">
Let op de bewerkingen hier.
Plak in de IF-instructie het SendEmail - script in de functie CheckSales() tussen de haken van de if-instructie.
Voeg ten tweede de variabele monthSales samen aan het einde van het e-mailbericht met het teken + .
Het enige dat u nog hoeft te doen, is de functie CheckSales() elke maand activeren.
Om dit te doen, in de scripteditor:
Klik op Opslaan om de trigger te voltooien.
Elke maand wordt uw nieuwe script uitgevoerd en wordt het totale maandelijkse verkoopbedrag in cel D2 vergeleken met $ 16.000.
Als het minder is, stuurt het een waarschuwingse-mail om u op de hoogte te stellen van de lage maandelijkse verkopen.
Zoals u kunt zien, biedt Google Apps Scripts veel functionaliteit in een klein pakket. Met slechts een paar simpele regels code kun je behoorlijk verbazingwekkende dingen doen.
Als je nog wat meer wilt experimenteren, probeer dan de vergelijkingslimiet van $ 16.000 toe te voegen aan een andere cel in de spreadsheet en lees dat dan in je script voordat je de vergelijking maakt. Op deze manier kunt u de limiet wijzigen door de waarde in het blad te wijzigen.
Door de code aan te passen en nieuwe codeblokken toe te voegen, kunt u voortbouwen op deze eenvoudige dingen die u leert om uiteindelijk een aantal fantastische Google-scripts te bouwen.
Tot nu toe gaat het goed, maar het bovenstaande script wordt alleen handmatig uitgevoerd als we geen triggers instellen. Gelukkig heeft Google de geactiveerde automatisering eenvoudig te configureren. Hier zijn de stappen.
Klik in de Apps Script-editor op het Triggers pictogram in de linkerzijbalk (het ziet eruit als een kleine klok).
Klik op de link Nieuwe trigger makenr of op de link Trigger toevoegen knop in de rechterbenedenhoek van de Triggers-pagina.
In het Kies welke functie u wilt uitvoeren vervolgkeuzemenu selecteert u E-mails verzenden< een i=4> functie.
In het Gebeurtenisbron selecteren vervolgkeuzemenu kiest u Tijdgestuurd.
In het Selecteer type tijdgebaseerde trigger vervolgkeuzemenu kiest u de gewenste frequentie (bijvoorbeeld Dagtimer voor dagelijkse e-mails, Weektimer voor wekelijkse e-mails, enz.).
Kies indien van toepassing het gewenste tijdsbereik of de dag van de week.
Klik op Opslaan om de trigger te maken.
Klik na het opslaan op de knop Implementeren in de rechterbovenhoek en volg de instructies om de implementatie te labelen en te definiëren. U moet de automatiseringsrechten geven om te worden uitgevoerd, en hetzelfde geldt voor het script zelf.
Wat betreft de gegeven trigger: aangezien ons voorbeeld gaat over het verzenden van factuurherinneringen, gaan we ervan uit dat deze maandelijks zijn en dat het passend is om ze elke 1e van de maand tussen 13.00 en 14.00 uur te sturen. Maar u kunt natuurlijk de frequentie en timing wijzigen op basis van uw behoeften.
Om u te laten zien hoe u e-mails met bijlagen kunt verzenden, gebruiken we het voorbeeldblad met factuurherinneringen en passen we het fragment aan om bijlagen op te nemen. Nu beginnen we met de functie en de e-mailsjabloon komt verderop in de code. verzendE-mailHerinneringen
We moeten benadrukken dat het onderstaande fragment e-mailbijlagen uit een Google Drive-map haalt, waarbij het van cruciaal belang is om de map-ID op te nemen en de gegeven naamgevingsconventie te volgen. Meer daarover onder de Laten we de codesectie uitsplitsen.
function sendEmailReminders() {// Haal het actieve blad op var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Haal het gegevensbereik op (exclusief de koprij) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Haal de waarden op uit het gegevensbereik var data = dataRange.getValues(); // Loop door de rijen met gegevens voor (var i = 0; i < data.length; i++) { var row = data[i]; // Haal de waarden uit elke kolom op var businessName = row[0]; var e-mail = rij[1]; var factuurnummer = rij[2]; var factuurbedrag = rij[3]; var dueDate = rij[4]; var onderwerp = rij[5]; // E-mail body var emailBody = "Beste " + bedrijfsnaam + ",\n\n" + "Dit is een herinnering dat Factuur #" + factuurnummer + " voor $" + factuurbedrag + " is verschuldigd op " + vervaldatum + ".\n" + "In bijlage vindt u de factuur.\n\n" + "Bedankt voor uw snelle aandacht in deze kwestie."; // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen zijn opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } // Verzend de e-mail met de bijlage MailApp.sendEmail({ to: email, subject: subject, body: emailBody, bijlagen: [invoiceFile] }); } }
1. Definieer de functie:sendEmailReminders
functie sendEmailReminders() {
De regel declareert een functie met de naam , die de code bevat voor het verzenden van e-mailherinneringen met bijlagen.sendEmailReminders
2. Haal het actieve blad op:
var blad = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
De regel haalt het actieve blad op uit het momenteel geopende Google Spreadsheets-document.
3. Haal het gegevensbereik op (exclusief de koprij):
var dataRange = blad.getRange(2, 1, blad.getLastRow() - 1, blad.getLastColumn());
Deze regel haalt het gegevensbereik in het blad op, met uitzondering van de koprij. Het begint vanaf de tweede rij (rij 2) en de eerste kolom (kolom 1) en strekt zich uit tot de laatste rij en de laatste kolom van het blad.
Opmerking: Wanneer u uw aangepaste blad maakt, moet u de aanpassen aan uw blad. gegevensbereik
4. Haal de waarden uit het gegevensbereik:
var data = dataRange.getValues();
Deze regel haalt de waarden (inhoud) op uit het celbereik dat in de vorige stap is gedefinieerd.
5. Loop door de rijen met gegevens:
for (var i = 0; i < data.length; i++) { var row = data[i];
Deze lus loopt door elke rij in de array. De variabele vertegenwoordigt de huidige rij met gegevens in elke iteratie.fordatarow
6. Haal de waarden uit elke kolom op:
var bedrijfsnaam = rij[0]; var e-mail = rij[1]; var factuurnummer = rij[2]; var factuurbedrag = rij[3]; var dueDate = rij[4]; var onderwerp = rij[5];
De bovenstaande regels extraheren de waarden uit elke kolom in de huidige rij met gegevens. Elke waarde wordt later toegewezen aan een variabele, zodat u deze gemakkelijk kunt raadplegen in het script. De opgegeven waarden zijn aangepast aan ons voorbeeldblad.
7. Maak de e-mailtekst:
var emailBody = "Beste " + bedrijfsnaam + ",\n\n" + "Dit is een herinnering dat Factuur #" + factuurnummer + " voor $" + factuurbedrag + " is verschuldigd op " + vervaldatum + ".\n" + "In bijlage vindt u de factuur.\n\n" + "Bedankt voor uw snelle aandacht in deze kwestie.";
De code construeert de hoofdtekst van de e-mail met behulp van de waarden die uit het blad zijn gehaald. De hoofdtekst van de e-mail is een tekenreeks die de bedrijfsnaam, het factuurnummer, het factuurbedrag en de vervaldatum bevat.
8. Haal het bijbehorende factuurbestand op:
var factuurFolderId = 'UW_FOLDER_ID_HIER'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); var factuurbestand; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; }
Met deze regels wordt het factuurbestand opgehaald dat aan de huidige rij is gekoppeld.
Eerst wordt de factuurbestandsmap geopend met behulp van de map-ID. Zorg ervoor dat u deze vervangt door de daadwerkelijke map-ID. UW_FOLDER_ID_HIER
Houd er rekening mee dat de naamgevingsconventie in ons voorbeeld is, en dat de daadwerkelijke factuur ‘123456.pdf’ heet. Als uw bijlagebestanden een andere naam hebben, moet u de opmaak bijwerken. (factuurnummer + '.pdf')
Vervolgens zoekt het script naar een bestand met dezelfde naam als het factuurnummer (ervan uitgaande dat het bestand in PDF-formaat is).
Als het bestand wordt gevonden, wordt het toegewezen aan de variabele; Anders registreert het script een foutmelding en gaat het door naar de volgende row.invoiceFile
9. Verstuur de e-mail met bijlage:
MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, hoofdtekst: emailBody, bijlagen: [invoiceFile] });
Deze regel verzendt de hoofdtekst en de e-mailbijlagen, en hier zijn de resultaten die u zou moeten krijgen. Bovendien zijn alle automatiseringsstappen van toepassing zoals eerder beschreven en is het logisch om de maandelijkse trigger te behouden, aangezien het hier om het sturen van factuurherinneringen gaat.
Om een HTML-e-mail te verzenden, kunt u enkele, vrij eenvoudige, wijzigingen aanbrengen in het eerder beschreven script. Hier is het:
function sendEmailReminders() {// Haal het actieve blad op var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Haal het gegevensbereik op (exclusief de koprij) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Haal de waarden op uit het gegevensbereik var data = dataRange.getValues(); // Loop door de rijen met gegevens voor (var i = 0; i < data.length; i++) { var row = data[i]; // Haal de waarden uit elke kolom op var businessName = row[0]; var e-mail = rij[1]; var factuurnummer = rij[2]; var factuurbedrag = rij[3]; var dueDate = rij[4]; var onderwerp = rij[5]; // HTML email body var emailBodyHtml = "<p>Beste " + bedrijfsnaam + ",</p>" + "<p>Dit is een herinnering dat Factuur #" + factuurnummer + " voor $" + factuurbedrag + " is verschuldigd op " + vervaldatum + ".</p>" + "<p>In bijlage vindt u de factuur.</p>" + "<p>Bedankt voor uw snelle aandacht voor deze kwestie.</p>"; // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen zijn opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } // Verzend de e-mail met de bijlage MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, bijlagen: [invoiceFile] }); } }
In deze versie wordt de platte tekst vervangen door een variabele die HTML-inhoud bevat. e-mailBodyemailBodyHtml
Wanneer de functie wordt aangeroepen, wordt de eigenschap body ook vervangen door de eigenschap, die de e-mail verzendt als een HTML-e-mail.MailApp.sendEmail()htmlBody
Kanttekeningen:
Voor het gemak gebruiken we in plaats van in het script. Beide opties zouden werken, maar zijn zeker beter leesbaar. Hoe dan ook, voel je vrij om het script opnieuw te formatteren en de aaneenschakelingsoperator te vervangen door tijdelijke aanduidingen bij tekenreeksinterpolatie. varconstconst${expressie}
Bovendien bevat geen van de scripts functies, omdat deze niet nodig waren voor onze voorbeelden. Maar het is natuurlijk ook mogelijk om dit soort scripts toe te voegen en zelfs te automatiseren. bccbcc
Ten slotte kunt u de boel nog spannender maken door aangepaste CSS-stijlen toe te voegen, zie de bijgewerkte functie hieronder. var emailBodyHtml =
// HTML-e-mailtekst met CSS-stijlen var emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".factuur-info {font-weight: bold; kleur: #4a4a4a;}" + "</stijl></hoofd><lichaam>" + "<p>Beste <span class='factuur-info'>" + bedrijfsnaam + "</span>,</p>" + "<p>Dit is een herinnering dat Factuur #<span class='invoice-info'>" + factuurnummer + "</span> voor $<span class='factuurinfo'>" + factuurbedrag + "</span> is verschuldigd op <span class='invoice-info'>" + vervaldatum + "</span>.</p>" + "<p>In bijlage vindt u de factuur.</p>" + "<p>Bedankt voor uw snelle aandacht voor deze kwestie.</p>" + "</body></html>";
Pro-tips:
Wanneer een cel een bepaalde waarde bereikt
We laten u zien hoe u een automatische e-mail kunt verzenden op basis van een celwaarde. In ons voorbeeld wordt de factuur verzonden wanneer de cel Factuurbedrag '0' bereikt, wat duidt op een gechurneerde klant.
De opgegeven celwaarde activeert een aangepaste churn-e-mail om onmiddellijk contact op te nemen met de klant. En nogmaals, de automatiseringsstappen blijven hetzelfde, je kunt nog steeds de maandelijkse trigger voor deze e-mails gebruiken.
Houd er rekening mee dat het script hetzelfde is als dat we gebruikten voor het verzenden van HTML-e-mails en bijlagen. Maar het heeft nog een functionaliteitslaag om de beschreven voorwaardelijke logica te introduceren. Hier is de code.
function sendEmailReminders() {// Haal het actieve blad op var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Haal het gegevensbereik op (exclusief de koprij) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Haal de waarden op uit het gegevensbereik var data = dataRange.getValues(); // Loop door de rijen met gegevens voor (var i = 0; i < data.length; i++) { var row = data[i]; // Haal de waarden uit elke kolom op var businessName = row[0]; var e-mail = rij[1]; var factuurnummer = rij[2]; var factuurbedrag = rij[3]; var dueDate = rij[4]; var onderwerp = rij[5]; // Bepaal de hoofdtekst van de e-mail op basis van het factuurbedrag var emailBodyHtml; if (invoiceAmount == 0) {// Churn-klant e-mail onderwerp = "Churn-klantmelding"; emailBodyHtml = "<html><head><stijl>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".factuur-info {font-weight: bold; kleur: #4a4a4a;}" + "</stijl></hoofd><lichaam>" + "<p>Beste " + bedrijfsnaam + ",</p>" + "<p>We hebben vastgesteld dat uw factuurbedrag € 0 is. We vinden het jammer dat u weggaat en zouden alle feedback op prijs stellen over de reden waarom u heeft besloten onze diensten niet meer te gebruiken.</p>" + "<p>Als we iets kunnen doen om onze dienstverlening te verbeteren of uw bedrijf terug te winnen, laat het ons dan weten.</p>" + "<p>Bedankt voor uw eerdere zaken.</p>" + "</body></html>"; } else { // Reguliere factuur-e-mail emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".factuur-info {font-weight: bold; kleur: #4a4a4a;}" + "</stijl></hoofd><lichaam>" + "<p>Beste <span class='factuur-info'>" + bedrijfsnaam + "</span>,</p>" + "<p>Dit is een herinnering dat Factuur #<span class='invoice-info'>" + factuurnummer + "</span> voor $<span class='factuurinfo'>" + factuurbedrag + "</span> is verschuldigd op <span class='invoice-info'>" + vervaldatum + "</span>.</p>" + "<p>In bijlage vindt u de factuur.</p>" + "<p>Bedankt voor uw snelle aandacht voor deze kwestie.</p>" + "</body></html>"; } // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen worden opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) { factuurbestand = factuurbestanden.volgende(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } // Verzend de e-mail met de bijlage MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, bijlagen: [invoiceFile] }); } }
Houd er rekening mee dat we ons alleen concentreren op wat er in de functie zit, om te voorkomen dat we herhalen wat al is beschreven. emailBodyHtml
Het bijgewerkte deel van de code bepaalt de inhoud van de e-mailtekst op basis van het factuurbedrag. Als het factuurbedrag is, wordt ervan uitgegaan dat het een churn-klant is en wordt er een ander e-mailsjabloon gebruikt. Hier is een overzicht van de code: '0'
var emailBodyHtml;
Het declareert een variabele met de naam en slaat de inhoud van de e-mailtekst op. En het blijft in eerste instantie ongedefinieerd.emailBodyHtml
if (factuurbedrag == 0) { ... }
In het overzicht wordt gecontroleerd of het factuurbedrag 0 is. Als dit het geval is, wordt de code tussen de accolades uitgevoerd. Dit blok bevat de e-mailsjabloon voor klantenverloop.if(`{}`)
subject = "Churn-klantmelding";
De regel stelt het e-mailonderwerp in voor churn-klanten. "Churn-klantmelding"
emailBodyHtml = "<html><head><stijl>" + ...
De regel stelt de waarde van de variabele in voor de e-mailsjabloon voor klantverloop. De template is een HTML-tekenreeks met CSS-stijlen die in de sectie zijn gedefinieerd. De hoofdtekst van de e-mail bevat tijdelijke aanduidingen voor de bedrijfsnaam en een bericht aan de klant.emailBodyHtml<head>
} anders { ... }
De blokkering wordt uitgevoerd als het factuurbedrag niet 0 is. De variabele wordt ingesteld op de reguliere e-mailsjabloon voor facturen. De e-mailsjabloon is een HTML-tekenreeks met CSS-stijlen die in de sectie zijn gedefinieerd. De hoofdtekst van de e-mail bevat tijdelijke aanduidingen voor de bedrijfsnaam, het factuurnummer, het factuurbedrag en de vervaldatum.elseemailBodyHtml<head>
Door deze voorwaardelijke logica te gebruiken, verzendt het script een andere e-mailtekst op basis van het feit of het factuurbedrag (churn-klant) of niet-nul is (gewone factuur). 0
Wanneer de celwaarde verandert
Nu nemen we hetzelfde script als hierboven en breiden het uit om een ander gebruiksscenario te dekken: een klant upgradet en de accountmanager moet een bedankmail met een factuur sturen.
Ter toelichting: het idee is dat de accountmanager elke maand een nieuw blad heeft (blad 2 in ons voorbeeld) met de inloggegevens van de klant.
De code vergelijkt nu de twee bladen en stuurt een automatische 'Bedankt'-e-mail, in plaats van de reguliere factuur-e-mail, naar klanten die een upgrade hebben uitgevoerd (hun Factuurbedrag is groter vergeleken met de vorige).
Het is ook niet nodig om de churn-e-mail aan te raken, omdat de kans bestaat dat iemand heeft besloten onze denkbeeldige service niet meer te gebruiken. Hier is het script.
function sendEmailReminders() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blad1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blad2"); var dataRange1 = blad1.getRange(2, 1, blad1.getLastRow() - 1, blad1.getLastColumn()); var dataRange2 = blad2.getRange(2, 1, blad2.getLastRow() - 1, blad2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues(); for (var i = 0; i < data1.length; i++) { var rij1 = data1[i]; var rij2 = data2[i]; var bedrijfsnaam = rij1[0]; var e-mail = rij1[1]; var factuurnummer = rij1[2]; var factuurAmount1 = parseFloat(rij1[3].toString().replace('$', '').replace(',', 39;.')); var factuurAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.')); if (isNaN(invoiceAmount1) || isNaN(invoiceAmount2)) { console.error("Ongeldige factuurbedragen voor bedrijven: " + bedrijfsnaam + ". factuurAmount1: " + factuurAmount1 + ", factuurAmount2: " + factuurAmount2 ); doorgaan; } var dueDate = rij1[4]; var onderwerp; var emailBodyHtml; if (invoiceAmount1 < factuurAmount2) { console.log("Bedankt voor het upgraden’ e-mail verzenden naar " + e-mail + ". factuurAmount1: " + factuurAmount1 + ", factuurAmount2: " + factuurbedrag2); subject = "Bedankt voor het upgraden"; emailBodyHtml = "<html><body>" + "<p>Beste " + bedrijfsnaam + ",</p>" + "<p>Bedankt voor het upgraden! Wij waarderen uw zaken en kijken ernaar uit u van dienst te zijn.</p>" + "<p>Met vriendelijke groet,</p>" + "<p>Uw bedrijf</p>" + "</body></html>"; MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Verzenden van 'Churn-klantmelding' e-mail naar " + e-mail + ". factuurAmount1: " + factuurAmount1); subject = "Churn-klantmelding"; emailBodyHtml = "<html><head><stijl>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".factuur-info {font-weight: bold; kleur: #4a4a4a;}" + "</stijl></hoofd><lichaam>" + "<p>Beste " + bedrijfsnaam + ",</p>" + "<p>We hebben vastgesteld dat uw factuurbedrag € 0 is. We vinden het jammer dat u weggaat en zouden alle feedback op prijs stellen over de reden waarom u heeft besloten onze diensten niet meer te gebruiken.</p>" + "<p>Als we iets kunnen doen om onze dienstverlening te verbeteren of uw bedrijf terug te winnen, laat het ons dan weten.</p>" + "<p>Bedankt voor uw eerdere zaken.</p>" + "</body></html>"; MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, htmlBody:emailBodyHtml }); } else { console.log("Verzenden van 'Factuurherinnering' e-mail naar " + e-mail + ". factuurAmount1: " + factuurAmount1 + ", factuurAmount2: " + factuurAmount2); subject = "Factuurherinnering"; emailBodyHtml = "<html><head><stijl>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".factuur-info {font-weight: bold; kleur: #4a4a4a;}" + "</stijl></hoofd><lichaam>" "<p>Geachte <span class='factuur-info'>" + bedrijfsnaam + "</span>,</p>" + "<p>Dit is een herinnering dat Factuur #<span class='invoice-info'>" + factuurnummer + "</span> voor $<span class='factuurinfo'>" + factuurbedrag1 + "</span> is verschuldigd op <span class='invoice-info'>" + vervaldatum + "</span>.</p>" + "<p>In bijlage vindt u de factuur.</p>" + "<p>Bedankt voor uw snelle aandacht voor deze kwestie.</p>" + "</body></html>"; // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen zijn opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, htmlBody: emailBodyHtml, bijlagen: [invoiceFile] }); } } }</p>" + "</body></html>"; // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen zijn opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, htmlBody: emailBodyHtml, bijlagen: [invoiceFile] }); } } }</p>" + "</body></html>"; // Voeg de bijbehorende factuur toe - U moet het juiste map-ID opgeven waar uw facturen zijn opgeslagen var factuurFolderId = 'YOUR_FOLDER_ID_HERE'; var factuurFolder = DriveApp.getFolderById(invoiceFolderId); var factuurFiles = factuurFolder.getFilesByName(factuurnummer + '.pdf'); // Ervan uitgaande dat factuurbestanden in PDF-formaat zijn var factuurFile; if (invoiceFiles.hasNext()) {invoiceFile = factuurFiles.next(); } else { // Als het factuurbestand niet wordt gevonden, kunt u deze rij overslaan of een fout registreren console.error("Factuurbestand niet gevonden voor factuurnummer: " + factuurnummer); doorgaan; } MailApp.sendEmail({ naar: e-mail, onderwerp: onderwerp, htmlBody: emailBodyHtml, bijlagen: [invoiceFile] }); } } }
Tot aan de codebreuk
1. Het script begint met het ophalen van verwijzingen naar zowel Blad1 als Blad2.
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blad1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Blad2");
2. Vervolgens worden de gegevens uit beide bladen opgehaald, beginnend bij de tweede rij om kopteksten uit te sluiten.
var dataRange1 = blad1.getRange(2, 1, blad1.getLastRow() - 1, blad1.getLastColumn()); var dataRange2 = blad2.getRange(2, 1, blad2.getLastRow() - 1, blad2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues();
3. Het script herhaalt de rijen in beide bladen (ervan uitgaande dat het aantal rijen op beide bladen hetzelfde is). Het vergelijkt de factuurbedragen van Blad1 en Blad2 voor elke overeenkomstige rij.
for (var i = 0; i < data1.length; i++) { var rij1 = data1[i]; var rij2 = data2[i]; // Haal factuurbedragen op uit beide bladen var factuurAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var factuurAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));
Kopiëren
4. Het script controleert vervolgens de voorwaarden voor het verzenden van verschillende soorten e-mails op basis van de vergelijking van factuurbedragen uit Blad1 en Blad2.
if (factuurAmount1 < factuurAmount2) {// Stuur "Bedankt voor het upgraden" email } else if (invoiceAmount1 == 0) {// Verzend "Churn-klantmelding" email } else { // Verstuur "Factuurherinnering" e-mail }
Kopiëren
De belangrijkste vergelijking is , waarbij wordt gecontroleerd of het factuurbedrag in Blad1 lager is dan het factuurbedrag in Blad2 voor dezelfde rij (dat wil zeggen, dezelfde klant). Als dit waar is, gaat het script ervan uit dat de klant een upgrade heeft uitgevoerd en wordt er een e-mail verzonden. Anders controleert het of er andere voorwaarden zijn (churn of regelmatige factuurherinneringen) en wordt de juiste e-mail verzonden.if (invoiceAmount1 < factuurAmount2)"Bedankt voor het upgraden"
Wanneer een Google Spreadsheets-bestand wordt bijgewerkt
Nu loont het de moeite om een ander gebruiksscenario te bespreken, waarbij andere mensen dan de accountmanager toegang hebben tot de spreadsheet.
Laten we ervan uitgaan dat onze accountmanager een dag vrij heeft om klanten te ontmoeten en hun vragen te beantwoorden. De klanten hebben toegang tot een spreadsheet waarin ze het probleem kort kunnen beschrijven en een slot kunnen reserveren.
Oké, er zijn veel betere manieren om boekingen en vragen van klanten af te handelen. Maar omwille van de tutorial zullen we bij deze aanpak blijven.
Stap 1
Eerst moeten we een tabel maken. Zoals hieronder wordt weergegeven, is de onze vrij eenvoudig en bevat slechts drie rijen met Manager, Tijdslot en Query.
Stap 2
Vervolgens heb je Google-scripts nodig om e-mails te activeren wanneer iemand het blad bijwerkt met zijn of haar vraag, en zo een plek reserveert. Hier is een voorbeeld.
//@OnlyCurrentDoc functie processEdit(e) { MailApp.sendEmail({ naar: "[email protected]" ;, subject: "Nieuwe boeking - tijdslot van de klant", body: "Een klant heeft een vraag voor je." });
Kopiëren
Om u te helpen begrijpen wat er aan de hand is, loont het de moeite om de belangrijkste functies te bespreken.
Voordat u verder gaat, kunt u het blad en de code testen. Als u het voorbeeldblad gebruikt, vult u gewoon een van de cellen onder de kolom Query in en voert u het script uit. De e-mail zou onmiddellijk in uw inbox moeten aankomen, maar let op: het script is nog niet geautomatiseerd.
Stap 3
Het is tijd om een trigger in te stellen en te autoriseren om automatisch e-mails te verzenden. Klik in Apps Script op het wekkerpictogram in het zijmenu. Klik vervolgens op “…maak een nieuwe trigger”.
Selecteer in het pop-upvenster Triggerconfiguratie de volgende criteria.
Opmerking: Het is geen probleem als u de instellingen voor storingsmeldingen standaard behoudt, maar u kunt deze wijzigen dat indien nodig. Het heeft geen invloed op de algehele werking van de trigger of het script. Dit kan van toepassing zijn op elk van de Google-scripts die u mogelijk wilt automatiseren.
Klik op Opslaan, autoriseer de trigger voor uw account en u ziet deze in de Triggers lijst. Zorg er ook voor dat u op de knop Implementeren klikt om de trigger te activeren.
Nu kunt u teruggaan naar het blad, een andere cel in de kolom Query invullen en controleren of u de automatische melding hebt ontvangen.
Opmerking: U kunt het blad aanpassen aan uw voorkeuren, maar dit betekent dat u ook het script moet aanpassen.
Ginger is een gratis spelling- en grammaticacontrole.
Blocks is een intellectueel spel voor leerlingen van de derde klas van de basisschool om hun detectie- en oogvaardigheden te oefenen en wordt door docenten opgenomen in het IT-onderwijsondersteuningsprogramma.
Prezi is een gratis applicatie waarmee u digitale presentaties kunt maken, zowel online als offline.
Mathway is een zeer nuttige app waarmee u al die wiskundige problemen kunt oplossen waarvoor een complexer hulpmiddel nodig is dan de ingebouwde rekenmachine van uw apparaat.
Adobe Presenter is e-Learning-software uitgegeven door Adobe Systems en beschikbaar op het Microsoft Windows-platform als een Microsoft PowerPoint-plug-in.
Toucan is een educatief technologieplatform. Hiermee kunt u een nieuwe taal leren terwijl u op gewone, alledaagse websites surft.
eNetViet is een applicatie die ouders helpt in contact te komen met de school waar hun kinderen studeren, zodat ze de huidige leersituatie van hun kind duidelijk kunnen begrijpen.
Duolingo - Leer gratis talen, of kortweg Duolingo, is een educatief programma waarmee je veel verschillende talen kunt leren en oefenen.
RapidTyping is een handige en gebruiksvriendelijke tool voor toetsenbordtraining waarmee u uw typsnelheid kunt verbeteren en spelfouten kunt verminderen. Met lessen georganiseerd voor veel verschillende niveaus, leert RapidTyping u hoe u kunt typen of bestaande vaardigheden kunt verbeteren.
MathType is interactieve vergelijkingssoftware van ontwikkelaar Design Science (Dessci), waarmee u wiskundige notaties kunt maken en annoteren voor tekstverwerking, presentaties, eLearning, enz. Deze editor wordt ook gebruikt voor het maken van TeX-, LaTeX- en MathML-documenten.