Slik legger du til Gmail på oppgavelinjen på Windows (HURTIGGUIDE)
Slik legger du til Gmail på oppgavelinjen i Windows 10/11 ved hjelp av Chrome eller Microsoft Edge. Få en rask og enkel veiledning her.
Sending av en e-post fra Google Sheets krever bruk av et Google Apps-skript. Men ikke bekymre deg, hvis du aldri har laget et eneste Google Apps-skript før, er det veldig enkelt å sende en e-post.
I den følgende opplæringen lærer du hvordan du sjekker verdien av en celle i Google Sheets . Hvis verdien er over en viss terskelgrense, kan du automatisk sende en e-postvarsel til hvilken som helst e-postadresse du vil.
Det er mange bruksområder for dette skriptet. Du kan motta et varsel hvis den daglige inntekten i salgsrapporten faller under et visst nivå. Eller du kan få en e-post hvis de ansatte rapporterer at de har fakturert kunden for mange timer i regnearket for prosjektsporing.
Uansett applikasjon er dette skriptet overbevisende. Det vil også spare deg for tid til å måtte overvåke regnearkoppdateringene manuelt.
Trinn 1: Sende en e-post med Google Sheets
Før du kan opprette et Google Apps-skript for å sende en e-post fra Google Regneark , trenger du også en Gmail-e-postadresse, som Google Apps Script får tilgang til for å sende ut e-postvarslene dine.
Du må også opprette et nytt regneark som inneholder en e-postadresse.
Bare legg til en navnekolonne og en e-postkolonne, og fyll dem ut med personen du ønsker skal motta e-postvarselet.
Nå som du har en e-postadresse å sende en e-postvarsel til, er det på tide å lage skriptet ditt.
For å komme inn i skriptredigering, klikk på Verktøy og klikk deretter Skriptredigering .
Du vil se et skriptvindu med en standardfunksjon kalt myFunction() . Gi nytt navn til SendEmail() .
Deretter limer du inn følgende kode i SendEmail()-funksjonen:
// 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);
Slik fungerer denne koden:
Lagre skriptet ved å klikke på diskikonet , og kjør det deretter ved å klikke på kjør- ikonet (høyre pil).
Husk at Google Script trenger tillatelse for å få tilgang til Gmail-kontoen din for å sende e-posten. Så første gang du kjører skriptet, kan du se et varsel som nedenfor.
Klikk på Gjennomgå tillatelser , og du vil se en annen varselskjerm som du må omgå.
Denne varslingsskjermen er fordi du skriver et tilpasset Google-skript som ikke er registrert som et offisielt.
Bare klikk på Avansert , og klikk deretter på koblingen Gå til Send e-post (usikker) .
Du trenger bare å gjøre dette én gang. Skriptet ditt vil kjøre, og e-postadressen du spesifiserte i regnearket vil motta en e-post som den nedenfor.
Trinn 2: Lese en verdi fra en celle i Google Sheets
Nå som du har skrevet et Google Apps-skript som kan sende en e-postvarsel, er det på tide å gjøre den e-postvarslingen mer funksjonell.
Det neste trinnet du lærer er hvordan du leser en dataverdi ut av et Google-regneark, sjekker verdien og sender en popup-melding hvis verdien er over eller under en øvre grense.
Før du kan gjøre dette, må du opprette et nytt ark i Google-regnearket du jobber med. Kall dette nye arket "MyReport."
Husk at celle D2 er den du vil sjekke og sammenligne. Tenk deg at du vil vite hver måned om det totale salget ditt har falt under $16 000.
La oss lage Google Apps-skriptet som gjør det.
Gå tilbake til Script Editor-vinduet ved å klikke på Verktøy og deretter Script Editor .
Hvis du bruker det samme regnearket, vil du fortsatt ha SendEmail()- funksjonen der. Klipp ut koden og lim den inn i Notisblokk. Du trenger det senere.
Lim inn følgende funksjon i kodevinduet.
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!');="" }="">
Slik fungerer denne koden:
Lagre denne koden og kjør den. Hvis det fungerer riktig, bør du se følgende varselmelding i nettleseren din.
Nå som du har et Google Apps-skript som kan sende et e-postvarsel og et annet skript som kan sammenligne en verdi fra et regneark, er du klar til å kombinere de to og sende et varsel i stedet for å utløse en varselmelding.
Trinn 3: Sett alt sammen
Nå er det på tide å kombinere de to skriptene du har laget til ett enkelt skript.
På dette tidspunktet bør du ha et regneark med en fane kalt Sheet1 som inneholder e-postvarslingsmottakeren. Den andre fanen kalt MyReport inneholder all salgsinformasjonen din.
Tilbake i Script Editor er det på tide å praktisere alt du har lært så langt.
Erstatt all koden i skriptredigeringsprogrammet med de to funksjonene dine, redigert som vist her.
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);="" }="">
Legg merke til redigeringene her.
Inne i IF-setningen limer du inn SendEmail- skriptet i CheckSales() -funksjonen innenfor if-setningsparentesene.
For det andre, sett sammen monthSales -variabelen til slutten av e-postmeldingen ved å bruke + -tegnet.
Det eneste som gjenstår er å utløse funksjonen CheckSales() hver måned.
For å gjøre dette, i skriptredigering:
Klikk på Lagre for å fullføre utløseren.
Hver måned vil det nye skriptet ditt kjøres og sammenligne det totale månedlige salgsbeløpet i celle D2 med $16 000.
Hvis det er mindre, vil det sende en e-postvarsel som varsler deg om det lave månedlige salget.
Som du kan se, pakker Google Apps Scripts mye funksjonalitet i en liten pakke. Med bare noen få enkle kodelinjer kan du gjøre noen ganske fantastiske ting.
Hvis du vil eksperimentere litt mer, kan du prøve å legge til sammenligningsgrensen på $16 000 i en annen celle i regnearket, og deretter lese det inn i skriptet før du sammenligner. På denne måten kan du endre grensen bare ved å endre verdien i arket.
Ved å finjustere koden og legge til nye kodeblokker, kan du bygge videre på disse enkle tingene du lærer for å bygge noen fantastiske Google-skript til slutt.
Så langt så bra, men skriptet ovenfor vil bare kjøre manuelt hvis vi ikke angir noen utløsere. Heldigvis gjorde Google den utløste automatiseringen enkel å konfigurere. Her er fremgangsmåten.
I Apps Script-redigeringsprogrammet klikker du på Utløsere ikonet på venstre sidefelt (det ser ut som en liten klokke).
Klikk på opprett ny trigger-koblingen eller Legg til utløser knappen nederst til høyre på utløsere-siden.
I Velg hvilken funksjon som skal kjøres rullegardinmenyen, velg sendEmails< en i=4> funksjon.
I Velg hendelseskilde rullegardinmenyen velger du Tidsdrevet.
I Velg type tidsbasert utløser rullegardinmenyen velger du frekvensen du ønsker (f.eks. Dagtimer for daglige e-poster, Uketimer for ukentlige e-poster osv.).
Hvis aktuelt, velg ønsket tidsrom eller ukedag.
Klikk Lagre for å opprette utløseren.
Etter du har lagret, klikker du på Distribuer -knappen øverst til høyre, og følger instruksjonene for å merke og definere implementeringen. Du må gi automasjonstillatelser for å kjøre, og det samme gjelder selve skriptet.
Når det gjelder den gitte triggeren, siden vårt eksempel handler om å sende fakturapåminnelser, antar vi at disse er månedlige, og det er hensiktsmessig å sende dem hver 1. i måneden mellom kl. 13.00 og 14.00. Men selvfølgelig kan du endre frekvensen og timingen basert på dine behov.
For å vise deg hvordan du sender e-poster med vedlegg, gjenbruker vi det eksemplariske arket med fakturapåminnelser og refaktoriserer kodebiten til å inkludere vedlegg. Nå begynner vi med funksjonen, og e-postmalen kommer senere i koden. sendEpostPåminnelser
Vi bør fremheve at kodebiten nedenfor henter e-postvedlegg fra en Google Disk-mappe, der det er viktig å inkludere mappe-ID-en og følge den gitte navnekonvensjonen. Mer om det under La oss bryte ned kodedelen.
function sendEmailReminders() { // Hent det aktive arket var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hent dataområdet (unntatt overskriftsraden) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hent verdiene fra dataområdet var data = dataRange.getValues(); // Gå gjennom radene med data for (var i = 0; i < data.length; i++) { var rad = data[i]; // Hent verdiene fra hver kolonne var businessName = row[0]; var email = rad[1]; var invoiceNumber = rad[2]; var invoiceAmount = rad[3]; var dueDate = rad[4]; var emne = rad[5]; // Email body var emailBody = "Kjære " + bedriftsnavn + ",\n\n" + "Dette er en påminnelse om at faktura #" + invoiceNumber + " for $" + invoiceAmount + " forfaller " + forfallsdato + ".\n" + "Vennligst finn vedlagte faktura.\n\n" + "Takk for din raske oppmerksomhet til denne saken."; // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } // Send e-posten med vedlegget MailApp.sendEmail({ to: email, subject: subject, body: emailBody, attachments: [invoiceFile] }); } }
1. Definer funksjonen:sendEmailReminders
function sendEmailReminders() {
Linjen erklærer en funksjon kalt , som vil inneholde koden for å sende e-postpåminnelser med attachments.sendEmailReminders
2. Få det aktive arket:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Linjen henter det aktive arket fra det åpne Google Sheets-dokumentet.
3. Få dataområdet (unntatt overskriftsraden):
var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
Denne linjen henter dataområdet i arket, unntatt overskriftsraden. Den starter fra den andre raden (rad 2) og den første kolonnen (kolonne 1) og strekker seg til den siste raden og den siste kolonnen på arket.
Sidemerknad: Når du oppretter det egendefinerte arket ditt, må du endre for å matche arket ditt. dataområde
4. Hent verdiene fra dataområdet:
var data = dataRange.getValues();
Denne linjen henter verdiene (innholdet) fra celleområdet definert i forrige trinn.
5. Gå gjennom dataradene:
for (var i = 0; i < data.length; i++) { var rad = data[i];
Denne løkken går gjennom hver rad i matrisen. Variabelen representerer gjeldende datarad i hver iteration.fordatarow
6. Hent verdiene fra hver kolonne:
var businessName = rad[0]; var email = rad[1]; var invoiceNumber = rad[2]; var invoiceAmount = rad[3]; var dueDate = rad[4]; var emne = rad[5];
Linjene ovenfor trekker ut verdiene fra hver kolonne i gjeldende datarad. Hver verdi blir senere tildelt en variabel for enkel referanse i skriptet. De angitte verdiene er tilpasset vårt eksemplariske ark.
7. Opprett e-postteksten:
var emailBody = "Kjære " + bedriftsnavn + ",\n\n" + "Dette er en påminnelse om at faktura #" + invoiceNumber + " for $" + invoiceAmount + " forfaller " + forfallsdato + ".\n" + "Vennligst finn vedlagte faktura.\n\n" + "Takk for din raske oppmerksomhet til denne saken.";
Koden konstruerer e-postteksten ved å bruke verdiene som er hentet fra arket. E-postteksten er en streng som inkluderer firmanavn, fakturanummer, fakturabeløp og forfallsdato.
8. Få den tilsvarende fakturafilen:
var invoiceFolderId = 'DIN_MAPPE_ID_HER'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { console.error("Faktafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; }
Disse linjene henter fakturafilen knyttet til gjeldende rad.
Først åpnes fakturafilmappen ved hjelp av mappe-IDen. Sørg for å erstatte med den faktiske mappe-ID-en. DIN_MAPPE_ID_HER
Merk at navnekonvensjonen i eksemplet vårt er , og den faktiske fakturaen heter «123456.pdf». Hvis vedleggsfilene dine har et annet navn, må du oppdatere formateringen. (fakturanummer + '.pdf')
Deretter søker skriptet etter en fil med samme navn som fakturanummeret (forutsatt at filen er i PDF-format).
Hvis filen blir funnet, tilordnes den til variabelen; ellers logger skriptet en feilmelding og går videre til neste row.invoiceFile
9. Send e-posten med vedlegget:
MailApp.sendEmail({ to: email, subject: subject, body: emailBody, vedlegg: [invoiceFile] });
Denne linjen sender brødteksten og e-postvedleggene, og her er resultatene du bør få. Dessuten gjelder alle automatiseringstrinn som tidligere beskrevet, og det er fornuftig å beholde den månedlige triggeren siden dette handler om å sende fakturapåminnelser.
For å sende en HTML-e-post kan du gjøre noen, ganske enkle, endringer i skriptet som er beskrevet tidligere. Her er det:
function sendEmailReminders() { // Hent det aktive arket var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hent dataområdet (unntatt overskriftsraden) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hent verdiene fra dataområdet var data = dataRange.getValues(); // Gå gjennom radene med data for (var i = 0; i < data.length; i++) { var rad = data[i]; // Hent verdiene fra hver kolonne var businessName = row[0]; var email = rad[1]; var invoiceNumber = rad[2]; var invoiceAmount = rad[3]; var dueDate = rad[4]; var emne = rad[5]; // HTML email body var emailBodyHtml = "<p>Kjære " + bedriftsnavn + ",</p>" + "<p>Dette er en påminnelse om at faktura #" + invoiceNumber + " for $" + invoiceAmount + " forfaller " + forfallsdato + ".</p>" + "<p>Finn vedlagte faktura.</p>" + "<p>Takk for din raske oppmerksomhet til denne saken.</p>"; // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } // Send e-posten med vedlegget MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }
I denne versjonen er ren tekst erstattet med en variabel som inneholder HTML-formatert innhold. emailBodyemailBodyHtml
Når du kaller funksjonen, erstattes også body-egenskapen med egenskapen, som sender e-posten som en HTML-e-post.MailApp.sendEmail()htmlBody
Sidemerknader:
Vi bruker i stedet for i skriptet for enkelhets skyld. Begge alternativene vil fungere, men de er definitivt mer lesbare. Uansett, formater gjerne skriptet på nytt og erstatte sammenkoblingsoperatoren med plassholdere ved strenginterpolering. varconstconst${expression}
Ingen av skriptene inkluderer funksjoner siden disse ikke var nødvendige for eksemplene våre. Men det er selvfølgelig også mulig å legge til, og til og med automatisere, med denne typen skript. bccbcc
Til slutt kan du krydre ting ved å legge til egendefinerte CSS-stiler, se den oppdaterte funksjonen nedenfor. var emailBodyHtml =
// HTML-e-posttekst med CSS-stiler var emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; farge: #4a4a4a;}" + "</stil></hode><kropp>" + "<p>Kjære <span class='invoice-info'>" + bedriftsnavn + "</span>,</p>" + "<p>Dette er en påminnelse om at faktura #<span class='invoice-info'>" + invoiceNumber + "</span> for $<span class='invoice-info'>" + invoiceAmount + "</span> forfaller på <span class='invoice-info'>" + forfallsdato + "</span>.</p>" + "<p>Finn vedlagte faktura.</p>" + "<p>Takk for din raske oppmerksomhet til denne saken.</p>" + "</body></html>";
Pro tips:
Når en celle når en viss verdi
Vi viser deg hvordan du sender en automatisk e-post basert på en celleverdi. I vårt eksempel vil fakturaen bli sendt når cellen Fakturabeløp når '0', noe som indikerer at en kunde har gått bort.
Den angitte celleverdien utløser en tilpasset churn-e-post for umiddelbart å nå ut til kunden. Og igjen, automatiseringstrinnene forblir de samme, du kan fortsatt bruke den månedlige utløseren for disse e-postene.
Husk at skriptet er det samme som vi brukte for å sende HTML-e-poster og vedlegg. Men den har et annet lag med funksjonalitet for å introdusere den beskrevne betingede logikken. Her er koden.
function sendEmailReminders() { // Hent det aktive arket var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hent dataområdet (unntatt overskriftsraden) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hent verdiene fra dataområdet var data = dataRange.getValues(); // Gå gjennom radene med data for (var i = 0; i < data.length; i++) { var rad = data[i]; // Hent verdiene fra hver kolonne var businessName = row[0]; var email = rad[1]; var invoiceNumber = rad[2]; var invoiceAmount = rad[3]; var dueDate = rad[4]; var emne = rad[5]; // Bestem e-postteksten basert på fakturabeløpet var emailBodyHtml; if (invoiceAmount == 0) { // Churn customer email subject = "Churn customer notification"; emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; farge: #4a4a4a;}" + "</stil></hode><kropp>" + "<p>Kjære " + bedriftsnavn + ",</p>" + "<p>Vi har lagt merke til at fakturabeløpet ditt er $0. Vi beklager at du går og setter pris på tilbakemeldinger om hvorfor du har bestemt deg for å slutte å bruke tjenestene våre.</p>" + "<p>Hvis det er noe vi kan gjøre for å forbedre tjenestene våre eller vinne tilbake virksomheten din, vennligst gi oss beskjed.</p>" + "<p>Takk for din tidligere virksomhet.</p>" + "</body></html>"; } else { // Vanlig e-postfaktura emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; farge: #4a4a4a;}" + "</stil></hode><kropp>" + "<p>Kjære <span class='invoice-info'>" + bedriftsnavn + "</span>,</p>" + "<p>Dette er en påminnelse om at faktura #<span class='invoice-info'>" + invoiceNumber + "</span> for $<span class='invoice-info'>" + invoiceAmount + "</span> forfaller på <span class='invoice-info'>" + forfallsdato + "</span>.</p>" + "<p>Finn vedlagte faktura.</p>" + "<p>Takk for din raske oppmerksomhet til denne saken.</p>" + "</body></html>"; } // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'DIN_FOLDER_ID_HER'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.neste(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } // Send e-posten med vedlegget MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, attachments: [invoiceFile] }); } }
Merk at vi kun fokuserer på det som er i funksjonen for å unngå å gjenta det som allerede er beskrevet. emailBodyHtml
Den oppdaterte delen av koden bestemmer innholdet i e-postteksten basert på fakturabeløpet. Hvis fakturabeløpet er, antas det å være en churn-kunde, og en annen e-postmal brukes. Her er en oversikt over koden: '0'
var emailBodyHtml;
Den erklærer en variabel med navn og lagrer innholdet i e-postteksten. Og det er i utgangspunktet undefined.emailBodyHtml
if (invoiceAmount == 0) { ... }
Erklæringen sjekker om fakturabeløpet er 0. Hvis det er det, blir koden innenfor de krøllede klammeparentesene utført. Denne blokken inneholder churn customer email template.if(`{}`)
emne = "Kunde varsling fra kunder";
Linjen setter e-postemnet til for churn-kunder."Churn-kundevarsel"
emailBodyHtml = "<html><head><style>" + ...
Linjen angir verdien av variabelen til e-postmalen for kundeavgang. Malen er en HTML-streng med CSS-stiler definert i delen. E-postteksten inneholder plassholdere for bedriftsnavnet og en melding til kunden.emailBodyHtml<head>
} annet { ... }
Blokkeringen utføres når fakturabeløpet ikke er 0. Den setter variabelen til den vanlige e-postmalen for fakturaer. E-postmalen er en HTML-streng med CSS-stiler definert i delen. E-postteksten inneholder plassholdere for virksomhetens navn, fakturanummer, fakturabeløp og forfallsdato.elseemailBodyHtml<head>
Ved å bruke denne betingede logikken sender skriptet en annen e-posttekst basert på om fakturabeløpet er (churn-kunde) eller ikke-null (vanlig faktura). 0
Når celleverdien endres
Nå tar vi det samme skriptet som er brukt ovenfor og utvider det til å dekke en annen brukssituasjon – en klient oppgraderer, og kontoadministratoren må sende en "Takk"-e-post med en faktura.
For å forklare er ideen at hver måned har kontoadministratoren et nytt ark (ark 2 i vårt eksempel) med kundenes legitimasjon.
Koden vil nå sammenligne de to arkene og sende en automatisk "Takk"-e-post, i stedet for den vanlige faktura-e-posten, til kunder som har oppgradert (deres Fakturabeløp a> er større sammenlignet med den forrige).
Det er heller ikke nødvendig å røre e-posten med churn, da det er en sjanse for at noen bestemte seg for å slutte å bruke vår imaginære tjeneste. Her er manuset.
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(); for (var i = 0; i < data1.lengde; i++) { var rad1 = data1[i]; var rad2 = data2[i]; var virksomhetsnavn = rad1[0]; var email = rad1[1]; var invoiceNumber = rad1[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("Ugyldige fakturabeløp for virksomhet: " + businessName + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceA2 ); Fortsette; } var forfallsdato = rad1[4]; var emne; var emailBodyHtml; if (invoiceAmount1 < invoiceAmount2) { console.log("Sender 'Takk for oppgraderingen' e-post til " + email + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); emne = "Takk for oppgraderingen"; emailBodyHtml = "<html><body>" + "<p>Kjære " + bedriftsnavn + ",</p>" + "<p>Takk for at du oppgraderte! Vi setter pris på din virksomhet og ser frem til å betjene deg.</p>" + "<p>Vennlig hilsen</p>" + "<p>din bedrift</p>" + "</body></html>"; MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Sender 'Churn kundevarsel' e-post til " + email + ". invoiceAmount1: " + invoiceAmount1); emne = "Kunde varsling fra kunder"; emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; farge: #4a4a4a;}" + "</stil></hode><kropp>" + "<p>Kjære " + bedriftsnavn + ",</p>" + "<p>Vi har lagt merke til at fakturabeløpet ditt er $0. Vi beklager at du går og setter pris på tilbakemeldinger om hvorfor du har bestemt deg for å slutte å bruke tjenestene våre.</p>" + "<p>Hvis det er noe vi kan gjøre for å forbedre tjenestene våre eller vinne tilbake virksomheten din, vennligst gi oss beskjed.</p>" + "<p>Takk for din tidligere virksomhet.</p>" + "</body></html>"; MailApp.sendEmail({ to: email, subject: subject, htmlBody:emailBodyHtml }); } else { console.log("Sender 'Invoice Reminder' e-post til " + email + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); emne = "Fakturapåminnelse"; emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: bold; farge: #4a4a4a;}" + "</stil></hode><kropp>" "<p>Kjære <span class='invoice-info'>" + bedriftsnavn + "</span>,</p>" + "<p>Dette er en påminnelse om at faktura #<span class='invoice-info'>" + invoiceNumber + "</span> for $<span class='invoice-info'>" + invoiceAmount1 + "</span> forfaller på <span class='invoice-info'>" + forfallsdato + "</span>.</p>" + "<p>Finn vedlagte faktura.</p>" + "<p>Takk for din raske oppmerksomhet til denne saken.</p>" + "</body></html>"; // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, vedlegg: [invoiceFile] }); } } }</p>" + "</body></html>"; // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, vedlegg: [invoiceFile] }); } } }</p>" + "</body></html>"; // Legg ved den tilsvarende fakturaen - Du må oppgi riktig mappe-ID der fakturaene dine er lagret var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Forutsatt at fakturafilene er i PDF-format var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Hvis fakturafilen ikke blir funnet, kan du hoppe over denne raden eller logge en feilmelding console.error("Fakturafil ikke funnet for fakturanummer: " + invoiceNumber); Fortsette; } MailApp.sendEmail({ to: email, subject: subject, htmlBody: emailBodyHtml, vedlegg: [invoiceFile] }); } } }
Ned til kodebruddet
1. Skriptet starter med å få referanser til både Ark1 og Ark2.
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
2. Den henter deretter dataene fra begge arkene, og starter fra den andre raden for å ekskludere overskrifter.
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. Skriptet itererer over radene i begge arkene (forutsatt at antallet rader er det samme i begge arkene). Den sammenligner fakturabeløpene fra Ark1 og Ark2 for hver tilsvarende rad.
for (var i = 0; i < data1.lengde; i++) { var rad1 = data1[i]; var rad2 = data2[i]; // Hent fakturabeløp fra begge arkene var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,','.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));
Kopiere
4. Skriptet sjekker deretter betingelsene for å sende ulike typer e-poster basert på sammenligning av fakturabeløp fra Ark1 og Ark2.
if (invoiceAmount1 < invoiceAmount2) { // Send "Takk for oppgraderingen" email } else if (invoiceAmount1 == 0) { // Send "Churn customer notification" email } else {// Send "Fakturapåminnelse" e-post }
Kopiere
Nøkkelsammenligningen er , som sjekker om fakturabeløpet i Ark1 er mindre enn fakturabeløpet i Ark2 for samme rad (dvs. samme kunde). Hvis det er sant, antar skriptet at kunden har oppgradert og sender en e-post. Ellers sjekker den for andre forhold (frafall eller vanlige fakturapåminnelser) og sender riktig e-post.if (invoiceAmount1 < invoiceAmount2)"Takk for oppgradering"
Når en Google Regneark-fil oppdateres
Nå lønner det seg å diskutere litt annerledes brukssak, der andre enn kontoansvarlig har tilgang til regnearket.
La oss anta at vår kontoadministrator har en dag dedikert til å møte kunder og svare på spørsmålene deres. Klientene har tilgang til et regneark der de kort kan beskrive problemet og bestille plass.
Ok, det er mye bedre måter å håndtere kundebestillinger og forespørsler på. Men vi vil holde oss til denne tilnærmingen for veiledningens skyld.
Trinn 1
Først må vi lage en tabell. Som vist nedenfor er vår ganske enkel, og inneholder bare tre rader med Manager, Time slot og Query.
Steg 2
Deretter trenger du Google-skript for å utløse e-poster uansett hvor noen oppdaterer arket med søket sitt, og dermed bestiller en plass. Her er et eksempel.
//@OnlyCurrentDoc function processEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, emne: "Ny bestilling -- klienttidsluke", brødtekst: "En klient har et spørsmål til deg." }); }
Kopiere
For å hjelpe deg å forstå hva som foregår, lønner det seg å diskutere hovedfunksjonene.
Før du går videre kan du teste arket og koden. Hvis du bruker det eksemplariske arket, fyller du bare inn en av cellene under Spørringskolonnen og kjører skriptet. E-posten skal komme i innboksen din umiddelbart, men husk at skriptet ikke er automatisert ennå.
Trinn 3
Det er på tide å angi og godkjenne en utløser for å sende e-poster automatisk. I Apps Script klikker du på vekkerklokkeikonet i sidemenyen. Klikk deretter "...opprett en ny utløser".
I popup-vinduet for utløserkonfigurasjon velger du følgende kriterier.
Merk: Det er greit hvis du beholder innstillingene for feilvarsling som standard, men du kan endre det om nødvendig. Det vil ikke påvirke den generelle funksjonen til utløseren eller manuset. Dette kan gjelde alle Google-skriptene du kanskje vil automatisere.
Klikk Lagre, autoriser utløseren på kontoen din, og du vil se den i Utløsere liste. Sørg også for å trykke på Deploy -knappen for å aktivere utløseren.
Nå kan du gå tilbake til arket, fylle ut en annen celle i Spørringskolonnen og sjekke om du mottok det automatiserte varselet.
Sidenotat: Du kan tilpasse arket til dine preferanser, men dette betyr at du også må tilpasse skriptet.
Slik legger du til Gmail på oppgavelinjen i Windows 10/11 ved hjelp av Chrome eller Microsoft Edge. Få en rask og enkel veiledning her.
Hvis App Store forsvant fra startskjermen på iPhone/iPad, ikke bekymre deg, det er en enkel løsning for å gjenopprette den.
Oppdag de beste ublokkerte spillnettstedene som ikke er blokkert av skoler for å forbedre underholdning og læring.
Mottar feilmelding om utskrift på Windows 10-systemet ditt, følg deretter rettelsene gitt i artikkelen og få skriveren din på rett spor...
Du kan enkelt besøke møtene dine igjen hvis du tar dem opp. Slik tar du opp og spiller av et Microsoft Teams-opptak for ditt neste møte.
Når du åpner en fil eller klikker på en kobling, vil Android-enheten velge en standardapp for å åpne den. Du kan tilbakestille standardappene dine på Android med denne veiledningen.
RETTET: Entitlement.diagnostics.office.com sertifikatfeil
Hvis du står overfor skriveren i feiltilstand på Windows 10 PC og ikke vet hvordan du skal håndtere det, følg disse løsningene for å fikse det.
Hvis du lurer på hvordan du sikkerhetskopierer Chromebooken din, har vi dekket deg. Finn ut mer om hva som sikkerhetskopieres automatisk og hva som ikke er her
Vil du fikse Xbox-appen vil ikke åpne i Windows 10, følg deretter rettelsene som Aktiver Xbox-appen fra tjenester, tilbakestill Xbox-appen, Tilbakestill Xbox-apppakken og andre..