Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Sähköpostin lähettäminen Google Sheetsistä edellyttää Google Apps Scriptin käyttöä. Mutta älä huoli, jos et ole koskaan aiemmin luonut yhtäkään Google Apps -skriptiä, sähköpostin lähettäminen on erittäin helppoa.

Seuraavassa opetusohjelmassa opit tarkistamaan solun arvon Google Sheetsissa . Jos arvo ylittää tietyn kynnysrajan, voit lähettää automaattisesti hälytyssähköpostin mihin tahansa haluamaasi sähköpostiosoitteeseen.

Tälle skriptille on monia käyttötarkoituksia. Saatat saada hälytyksen, jos myyntiraportin päivittäiset tulot putoavat tietyn tason alapuolelle. Tai voit saada sähköpostin, jos työntekijäsi ilmoittavat laskuttaneensa asiakasta liian monta tuntia projektiseurantataulukossasi.

Sovelluksesta riippumatta tämä käsikirjoitus on vakuuttava. Säästät myös aikaa, jonka joudut seuraamaan laskentataulukkopäivityksiäsi manuaalisesti.

Vaihe 1: Sähköpostin lähettäminen Google Sheetsin avulla

Ennen kuin voit luoda Google Apps Scriptin sähköpostin lähettämistä varten Google Sheetsista , tarvitset myös Gmail-sähköpostiosoitteen, jota Google Apps Script käyttää lähettääkseen hälytyssähköpostisi.

Sinun on myös luotava uusi laskentataulukko, joka sisältää sähköpostiosoitteen.

Lisää vain nimisarake ja sähköpostisarake ja täytä ne henkilöllä, jolle haluat saada hälytyssähköpostin.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Nyt kun sinulla on sähköpostiosoite, johon voit lähettää hälytyssähköpostin, on aika luoda skripti.

Pääset komentosarjaeditoriin napsauttamalla Työkalut ja sitten Skriptieditori .

Näet komentosarjaikkunan, jossa on oletusfunktio nimeltä  myFunction() . Nimeä tämä uudelleen nimellä SendEmail() .

Liitä seuraavaksi seuraava koodi SendEmail()-funktion sisään:

// 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);

Näin tämä koodi toimii:

  • getRange ja getValues ​​hakevat arvon getRange-menetelmässä määritetystä solusta.
  • var-viesti ja var-aihe määrittävät tekstin, joka rakentaa hälytyssähköpostisi.
  • MailApp.sendEmail - toiminto suorittaa vihdoin Google Scripts -sähköpostitoiminnon käyttämällä yhdistettyä Google-tiliäsi.

Tallenna komentosarja napsauttamalla levykuvaketta ja suorita se sitten napsauttamalla suorituskuvaketta ( oikea nuoli).

Muista, että Google Script tarvitsee luvan käyttää Gmail-tiliäsi sähköpostin lähettämistä varten. Joten kun suoritat skriptin ensimmäistä kertaa, saatat nähdä alla olevan kaltaisen hälytyksen.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Napsauta Tarkista käyttöoikeudet , niin näet toisen hälytysnäytön, joka sinun on ohitettava.

Tämä hälytysnäyttö johtuu siitä, että kirjoitat mukautettua Google-skriptiä, jota ei ole rekisteröity viralliseksi.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Napsauta vain Lisäasetukset ja napsauta sitten Siirry SendEmailiin (vaarallinen) -linkkiä.

Sinun tarvitsee tehdä tämä vain kerran. Ohjelmasi suoritetaan, ja laskentataulukossasi määrittämäsi sähköpostiosoite saa alla olevan kaltaisen sähköpostin.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Vaihe 2: Arvon lukeminen solusta Google Sheetsissa

Nyt kun olet onnistuneesti kirjoittanut Google Apps Scriptin, joka voi lähettää hälytyssähköpostin, on aika tehdä hälytyssähköpostista toimivampi.

Seuraava vaihe, jonka opit, on lukea data-arvo Google-laskentataulukosta, tarkistaa arvo ja lähettää ponnahdusviesti, jos arvo on ylärajan ylä- tai alapuolella.

Ennen kuin voit tehdä tämän, sinun on luotava toinen taulukko käyttämääsi Google-laskentataulukkoon. Kutsu tämä uusi arkki "MyReport".

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Muista, että solu D2 on se, jonka haluat tarkistaa ja vertailla. Kuvittele, että haluat tietää joka kuukausi, onko kokonaismyyntisi laskenut alle 16 000 dollarin.

Luodaan Google Apps Script, joka tekee sen.

Palaa Script Editor -ikkunaan napsauttamalla Työkalut ja sitten Script Editor .

Jos käytät samaa laskentataulukkoa,  siinä on edelleen SendEmail()- toiminto. Leikkaa koodi ja liitä se Muistioon. Tarvitset sitä myöhemmin.

Liitä seuraava funktio koodiikkunaan.

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

Kuinka tämä koodi toimii:

  • Lataa arvo solusta D2 monthSales- muuttujaan .
  • IF-lausunto vertaa kuukausittaista myyntiä solussa D2 16 000 dollariin
  • Jos arvo on yli 16 000, koodi laukaisee selaimen viestiruudun, jossa on ilmoitus.

Tallenna tämä koodi ja suorita se. Jos se toimii oikein, sinun pitäisi nähdä seuraava varoitusviesti selaimessasi.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Nyt kun sinulla on Google Apps -skripti, joka voi lähettää sähköpostihälytyksen ja toinen komentosarja, joka voi verrata laskentataulukon arvoja, olet valmis yhdistämään nämä kaksi ja lähettämään hälytyksen hälytysviestin käynnistämisen sijaan.

Vaihe 3: Laita kaikki yhteen

Nyt on aika yhdistää kaksi luomaasi skriptiä yhdeksi skriptiksi.

Tähän mennessä sinulla pitäisi olla laskentataulukko, jossa on välilehti nimeltä Sheet1 ja joka sisältää hälytyksen vastaanottajan. Toinen välilehti nimeltä MyReport sisältää kaikki myyntitietosi.

Takaisin Script Editorissa on aika ottaa kaikki tähän mennessä oppimasi käyttöön käytännössä.

Korvaa kaikki komentosarjaeditorin koodi kahdella funktiollasi, joita on muokattu tässä kuvatulla tavalla.

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

Huomioi muutokset tästä.

Liitä IF-käskyn sisään SendEmail- komentosarja CheckSales() -funktion sisään if-lauseen hakasulkeisiin.

Toiseksi ketjuta monthSales -muuttuja sähköpostiviestin loppuun käyttämällä + -merkkiä.

Ainoa asia, joka on jäljellä, on käynnistää CheckSales()-toiminto joka kuukausi.

Voit tehdä tämän komentosarjaeditorissa seuraavasti:

  1. Napsauta Muokkaa - valikkokohtaa ja napsauta sitten Nykyisen projektin triggerit .
  2. Napsauta näytön alareunassa Luo uusi triggeri .
  3. Valitse suoritettava CheckSales -toiminto.
  4. Muuta Valitse tapahtuman lähde aikaohjatuksi .
  5. Muuta  Valitse aikapohjaisen laukaisimen tyypiksi Kuukausiajastin .

Viimeistele liipaisin napsauttamalla Tallenna.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Joka kuukausi uusi komentosarjasi suoritetaan ja vertaa kuukausittaista kokonaismyyntiä solussa D2 16 000 dollariin.

Jos se on pienempi, se lähettää hälytyssähköpostin, jossa ilmoitetaan alhaisesta kuukausimyynnistä.

Käytä Google Sheetsia lähettääksesi sähköpostia solun arvon perusteella

Kuten näet, Google Apps Scripts sisältää paljon toimintoja pienessä paketissa. Muutamalla yksinkertaisella koodirivillä voit tehdä upeita asioita.

Jos haluat kokeilla lisää, lisää 16 000 dollarin vertailuraja laskentataulukon toiseen soluun ja lue se sitten käsikirjoituksestasi ennen vertailun tekemistä. Tällä tavalla voit muuttaa rajaa muuttamalla taulukon arvoa.

Säätämällä koodia ja lisäämällä uusia koodilohkoja voit rakentaa näiden yksinkertaisten asioiden pohjalta lopulta uskomattomia Google-skriptejä.

Prosessin automatisointi

Toistaiseksi mennyt hyvin, mutta yllä oleva komentosarja toimii vain manuaalisesti, jos emme aseta laukaisimia. Onneksi Google teki käynnistyneen automaation määrittämisen helpoksi. Tässä ovat vaiheet. 

Napsauta Apps Script -editorissa vasemmassa sivupalkissa olevaa Triggerit -kuvaketta (se näyttää pieneltä kellolta).

Napsauta luo uusi triggerir-linkkiä tai Lisää triggeri -painiketta Triggers-sivun oikeassa alakulmassa.

Valitse avattavasta Valitse suoritettava toiminto -valikosta sendEmails<. i=4> funktio.

Valitse avattavasta Valitse tapahtuman lähde -valikosta Aikaohjattu.

Valitse avattavasta Valitse aikaperusteisen triggerin tyyppi -valikosta haluamasi taajuus (esim. Päiväajastin päivittäisille sähköpostiviesteille, viikkoajastin viikoittaisille sähköpostiviesteille jne.)

Valitse tarvittaessa haluamasi aikaväli tai viikonpäivä.

Luo laukaisin napsauttamalla Tallenna .

Napsauta tallennuksen jälkeen Ota käyttöön -painiketta oikeassa yläkulmassa ja seuraa ohjeita käyttöönoton nimeämiseksi ja määrittämiseksi. Sinun on annettava automaatiokäyttöoikeudet, ja sama koskee itse komentosarjaa.  

Mitä tulee annettuun triggeriin, koska esimerkkimme koskee laskumuistutusten lähettämistä, oletamme, että ne ovat kuukausittain, ja ne kannattaa lähettää joka kuun 1. päivä klo 13-14 välillä. Mutta tietysti voit muuttaa taajuutta ja ajoitusta tarpeidesi mukaan. 

Kuinka lähettää sähköpostin liitteenä

Osoittaaksemme sinulle, kuinka lähetät liitteitä sisältäviä sähköposteja, käytämme uudelleen esimerkillistä laskumuistutusten sisältävää taulukkoa ja muokkaamme katkelman uudelleen liitetiedostoiksi. Aloitamme nyt toiminnolla, ja sähköpostimalli tulee myöhemmin koodiin. lähetä sähköpostimuistutuksia

On syytä korostaa, että alla oleva koodinpätkä hakee sähköpostin liitteet Google Drive -kansiosta, johon on tärkeää sisällyttää kansion tunnus ja noudattaa annettua nimeämiskäytäntöä. Lisätietoja on kohdassa Määritetään koodiosio

function sendEmailReminders() { // Hanki aktiivinen taulukko var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hae tietoalue (pois lukien otsikkorivi) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hae arvot tietoalueelta var data = dataRange.getValues(); // Selaa datarivejä (var i = 0; i < data.length; i++) { var row = data[i]; // Hae arvot kustakin sarakkeesta var businessName = row[0]; var email = rivi[1]; var invoiceNumber = rivi[2]; var invoiceAmount = rivi[3]; var dueDate = rivi[4]; var aihe = rivi[5]; // Sähköpostin teksti var emailBody = "Hei " + yrityksen nimi + ",\n\n" + "Tämä on muistutus siitä, että lasku #" + InvoiceNumber + " $" + invoiceAmount + " erääntyy " + eräpäivä + ".\n" + "Etsi liitteenä oleva lasku.\n\n" + "Kiitos nopeasta huomiostasi tähän asiaan."; // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskut on tallennettu. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } // Lähetä sähköposti liitteenä MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, runko: emailBody, liitteet: [invoiceFile] }); } }

Puretaan koodi

1. Määritä function:sendEmailReminders

function sendEmailReminders() {

Rivi ilmoittaa funktion nimeltä , joka sisältää koodin sähköpostimuistutusten lähettämiseen liitteineen.sendEmailReminders

2. Hanki aktiivinen taulukko:

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

Rivi hakee aktiivisen taulukon tällä hetkellä avoinna olevasta Google Sheets -asiakirjasta.

3. Hanki tietoalue (pois lukien otsikkorivi):

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

Tämä rivi hakee taulukon tietoalueen otsikkoriviä lukuun ottamatta. Se alkaa toisesta rivistä (rivi 2) ja ensimmäisestä sarakkeesta (sarake 1) ja ulottuu arkin viimeiseen riviin ja viimeiseen sarakkeeseen.

Sivuhuomautus: Kun luot mukautetun taulukon, sinun on muokattava taulukkoa vastaavaksi. tietoalue

4. Hanki arvot tietoalueelta:

var data = dataRange.getValues();

Tämä rivi hakee arvot (sisällöt) edellisessä vaiheessa määritetystä solualueesta.

5. Selaa tietorivejä:

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

Tämä silmukka toistuu taulukon jokaisen rivin läpi. Muuttuja edustaa kunkin iteration.fordatarowin nykyistä tietoriviä

6. Hanki arvot kustakin sarakkeesta:

var businessName = rivi[0]; var email = rivi[1]; var invoiceNumber = rivi[2]; var invoiceAmount = rivi[3]; var dueDate = rivi[4]; var aihe = rivi[5];

Yllä olevat rivit poimivat arvot jokaisesta nykyisen tietorivin sarakkeesta. Jokainen arvo määritetään myöhemmin muuttujalle, jotta se on helppo viitata komentosarjassa. Annetut arvot ovat mukautettuja esimerkilliseen arkkiimme. 

7. Luo sähköpostin runko:

var emailBody = "Hei " + yrityksen nimi + ",\n\n" + "Tämä on muistutus siitä, että lasku #" + InvoiceNumber + " $" + invoiceAmount + " erääntyy " + eräpäivä + ".\n" + "Etsi liitteenä oleva lasku.\n\n" + "Kiitos nopeasta huomiostasi tähän asiaan.";

Koodi rakentaa sähköpostin rungon käyttämällä taulukosta poimittuja arvoja. Sähköpostin runko on merkkijono, joka sisältää yrityksen nimen, laskun numeron, laskun summan ja eräpäivän.

8. Hanki vastaava laskutiedosto:

var invoiceFolderId = 'OMA_KANSIJOI_ID_TÄSTÄ'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; }

Nämä rivit hakevat nykyiseen riviin liittyvän laskutiedoston. 

Ensin päästään laskutiedostokansioon sen kansiotunnuksella. Muista korvata todellisella kansion tunnuksella. YOUR_FOLDER_ID_THERE

Huomaa, että esimerkissämme nimeämiskäytäntö on  ja varsinaisen laskun nimi on 123456.pdf. Jos liitetiedostosi on nimetty eri tavalla, sinun on päivitettävä muotoilu. (invoiceNumber + '.pdf')

Seuraavaksi komentosarja etsii tiedostoa, jolla on sama nimi kuin laskun numero (olettaen, että tiedosto on PDF-muodossa). 

Jos tiedosto löytyy, se liitetään muuttujaan. muussa tapauksessa komentosarja kirjaa virhesanoman ja siirtyy seuraavaan riviin.invoiceFile

9. Lähetä sähköposti liitteenä:

MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, runko: emailBody, liitteet: [invoiceFile] });

Tämä rivi lähettää tekstin ja sähköpostin liitteet, ja tässä on tulokset, jotka sinun pitäisi saada. Lisäksi kaikki automaatiovaiheet pätevät aiemmin kuvatulla tavalla, ja on järkevää säilyttää kuukausittainen laukaisu, koska kyse on laskumuistutusten lähettämisestä. 

Lähetä HTML-sähköposti GSheetsin avulla

HTML-sähköpostin lähettämiseksi voit tehdä joitain melko yksinkertaisia ​​muutoksia aiemmin kuvattuun komentosarjaan. Tässä se on: 

function sendEmailReminders() { // Hanki aktiivinen taulukko var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hae tietoalue (pois lukien otsikkorivi) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hae arvot tietoalueelta var data = dataRange.getValues(); // Selaa datarivejä (var i = 0; i < data.length; i++) { var row = data[i]; // Hae arvot kustakin sarakkeesta var businessName = row[0]; var email = rivi[1]; var invoiceNumber = rivi[2]; var invoiceAmount = rivi[3]; var dueDate = rivi[4]; var aihe = rivi[5]; // HTML-sähköpostin body var emailBodyHtml = "<p>Hei " + yrityksen nimi + ",</p>" + "<p>Tämä on muistutus siitä, että lasku #" + InvoiceNumber + " $" + invoiceAmount + " erääntyy " + eräpäivä + ".</p>" + "<p>Etsi liitteenä oleva lasku.</p>" + "<p>Kiitos nopeasta huomiostasi tähän asiaan.</p>"; // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskut on tallennettu. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } // Lähetä sähköposti liitteenä MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml, liitteet: [invoiceFile] }); } }

Tässä versiossa pelkkä teksti korvataan muuttujalla, joka sisältää HTML-muotoista sisältöä. emailBodyemailBodyHtml

Kun funktiota kutsutaan, body-ominaisuus korvataan myös ominaisuudella, joka lähettää sähköpostin HTML-sähköpostina.MailApp.sendEmail()htmlBody

Sivuhuomautuksia: 

Käytämme skriptissä mukavuuden vuoksi. Kumpi tahansa vaihtoehto toimisi, mutta varmasti on luettavampi. Voit joka tapauksessa muotoilla skriptin uudelleen ja korvata ketjutusoperaattorin paikkamerkeillä merkkijonointerpoloinnissa. varconstconst${expression}

Mikään skripteistä ei myöskään sisällä toimintoja, koska ne eivät olleet välttämättömiä esimerkeissämme. Mutta tietysti on myös mahdollista lisätä ja jopa automatisoida tällaisilla skripteillä. bccbcc

Lopuksi voit piristää asioita lisäämällä mukautettuja CSS-tyylejä, katso päivitetty toiminto alta. var emailBodyHtml =

// HTML-sähköpostin body CSS-tyyleillä var emailBodyHtml = "<html><head><style>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".laskun tiedot {fontin paino: lihavoitu; väri: #4a4a4a;}" + "</style></head><body>" + "<p>Hyvä <span class='lasku-info'>" + yrityksen nimi + "</span>,</p>" + "<p>Tämä on muistutus siitä, että lasku #<span class='lasku-info'>" + laskunumero + "</span> $<span class='invoice-info'>" + invoiceAmount + "</span> erääntyy <span class='invoice-info'>" + eräpäivä + "</span>.</p>" + "<p>Etsi liitteenä oleva lasku.</p>" + "<p>Kiitos nopeasta huomiostasi tähän asiaan.</p>" + "</body></html>";

Provinkit: 

  • Toimi helposti, sillä jotkin postilaatikkopalveluntarjoajat eivät ehkä tue ja renderöi voimakkaasti tyyliteltyjä sähköposteja oikein tai ollenkaan. <tyyli>
  • Käytä Mailtrap-sähköpostitestausta nähdäksesi, kuinka paljon postilaatikkopalveluntarjoajat tukevat HTML-sähköpostiasi. 
  • Jos haluat lähettää suurella äänenvoimakkuudella, on aina parasta käyttää oikeaa MTA:ta funktion sijaan. sendEmail
  • Ota huomioon Gmail-tilisi rajoitukset. Nämä ovat erilaisia ​​Google Workspacessa ja/tai yksityisessä tilissäsi. 

Kuinka lähettää käynnistysviestejä Google Sheetsista?

Kun solu saavuttaa tietyn arvon

Näytämme sinulle, kuinka voit lähettää automaattisen sähköpostin solun arvon perusteella. Esimerkissämme lasku lähetetään, kun Laskun summa -solu saavuttaa "0":n, mikä tarkoittaa vaihtuvaa asiakasta. 

Annettu solun arvo käynnistää mukautetun vaihtuvan sähköpostin, joka tavoittaa välittömästi asiakkaan. Ja jälleen, automaatiovaiheet pysyvät samoina, voit silti käyttää kuukausittaista laukaisua näille sähköpostiviesteille. 

Muista, että skripti on sama, jota käytimme HTML-sähköpostien ja liitteiden lähettämiseen. Mutta siinä on toinen toiminnallisuuskerros kuvatun ehdollisen logiikan käyttöön ottamiseksi. Tässä on koodi. 

function sendEmailReminders() { // Hanki aktiivinen taulukko var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Hae tietoalue (pois lukien otsikkorivi) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Hae arvot tietoalueelta var data = dataRange.getValues(); // Selaa datarivejä (var i = 0; i < data.length; i++) { var row = data[i]; // Hae arvot kustakin sarakkeesta var businessName = row[0]; var email = rivi[1]; var invoiceNumber = rivi[2]; var invoiceAmount = rivi[3]; var dueDate = rivi[4]; var aihe = rivi[5]; // Määritä sähköpostin runko laskun summan perusteella var emailBodyHtml; if (invoiceAmount == 0) { // Churn asiakkaan sähköpostin aihe = "Churn customer report"; emailBodyHtml = "<html><head><tyyli>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".laskun tiedot {fontin paino: lihavoitu; väri: #4a4a4a;}" + "</style></head><body>" + "<p>Hei " + yrityksen nimi + ",</p>" + "<p>Olemme huomanneet, että laskusi summa on 0 dollaria. Olemme pahoillamme, että poistut, ja arvostamme palautetta siitä, miksi olet päättänyt lopettaa palveluidemme käytön.</p>" + "<p>Jos voimme tehdä jotain palveluidemme parantamiseksi tai yrityksesi takaisin saamiseksi, ilmoita siitä meille.</p>" + "<p>Kiitos menneestä liiketoiminnasta.</p>" + "</body></html>"; } else { // Tavallinen laskun sähköposti sähköpostiBodyHtml = "<html><head><tyyli>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".laskun tiedot {fontin paino: lihavoitu; väri: #4a4a4a;}" + "</style></head><body>" + "<p>Hyvä <span class='lasku-info'>" + yrityksen nimi + "</span>,</p>" + "<p>Tämä on muistutus siitä, että lasku #<span class='lasku-info'>" + laskun numero + "</span> $<span class='invoice-info'>" + invoiceAmount + "</span> erääntyy <span class='invoice-info'>" + eräpäivä + "</span>.</p>" + "<p>Etsi liitteenä oleva lasku.</p>" + "<p>Kiitos nopeasta huomiostasi tähän asiaan.</p>" + "</body></html>"; } // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskusi on tallennettu var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = laskutiedostot.Seuraava(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } // Lähetä sähköposti liitteenä MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml, liitteet: [invoiceFile] }); } }

Alas koodikatkoon 

Huomaa, että keskitymme vain toiminnon sisältöön, jotta vältytään toistamasta sitä, mitä jo kuvattiin. emailBodyHtml

Päivitetty koodin osa määrittää sähköpostin tekstiosan sisällön laskun summan perusteella. Jos laskun summa on , sen oletetaan olevan vaihtuva asiakas ja käytetään eri sähköpostimallia. Tässä koodin erittely: "0"

var emailBodyHtml;

Se ilmoittaa muuttujan nimeltä ja tallentaa sähköpostin rungon sisällön. Ja se jätetään aluksi undefined.emailBodyHtml

if (invoiceAmount == 0) { ... }

Lausunto tarkistaa, onko laskun summa 0. Jos on, aaltosulkeissa oleva koodi suoritetaan. Tämä lohko sisältää churn client email template.if(`{}`)

aihe = "Curn customer report";

Rivi asettaa sähköpostin aiheen vaihtuville asiakkaille."Curn-asiakasilmoitus"

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

 Rivi asettaa muuttujan arvon churn-asiakkaan sähköpostimalliin. Malli on HTML-merkkijono, jonka CSS-tyylit on määritetty osiossa. Sähköpostin runko sisältää paikkamerkit yrityksen nimelle ja viestin customer.emailBodyHtml<head>

} muuta { ... }

Esto suoritetaan, kun laskun summa ei ole 0. Se asettaa muuttujan tavalliseen laskusähköpostimalliin. Sähköpostimalli on HTML-merkkijono, jonka CSS-tyylit on määritetty osiossa. Sähköpostin runko sisältää paikkamerkit yrityksen nimelle, laskun numerolle, laskun summalle ja eräpäivälle.elseemailBodyHtml<head>

Tätä ehdollista logiikkaa käyttämällä skripti lähettää eri sähköpostin tekstiosan sen mukaan, onko laskun summa (asiakasvaihtuvuus) vai nollasta poikkeava (tavallinen lasku). 0

Kun solun arvo muuttuu

Nyt otamme saman yllä käytetyn skriptin ja laajennamme sen kattamaan toisen käyttötapauksen – asiakkaan päivitykset, ja tilivastaavan on lähetettävä "Kiitos"-sähköposti laskulla. 

Tarkoituksena on selittää, että tilivastaavalla on joka kuukausi uusi Sheet (esimerkissämme taulukko 2), jossa on asiakkaiden tunnistetiedot. 

Koodi vertaa nyt kahta taulukkoa ja lähettää automaattisen "kiitos"-sähköpostin tavallisen laskusähköpostin sijaan asiakkaille, jotka ovat päivittäneet (heidän Laskun summan on suurempi kuin edellinen). 

Myöskään churn-sähköpostiin ei tarvitse koskea, sillä on mahdollista, että joku on päättänyt lopettaa kuvitteellisen palvelumme käytön. Tässä on käsikirjoitus.

function sendEmailReminders() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); var tietoalue1 = taulukko1.getAlue(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var tietoalue2 = taulukko2.getAlue(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var data1 = tietoalue1.getArvot(); var data2 = dataRange2.getValues(); for (var i = 0; i < data1.length; i++) { var rivi1 = data1[i]; var rivi2 = data2[i]; var businessName = rivi1[0]; var email = rivi1[1]; var invoiceNumber = rivi1[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("Virheelliset laskun summat yritykselle: " + businessName + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " ); jatkaa; } var dueDate = rivi1[4]; var aihe; var emailBodyHtml; if (invoiceAmount1 < invoiceAmount2) { console.log("Lähetetään 'Kiitos päivityksestä' sähköposti osoitteeseen " + sähköposti + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); aihe = "Kiitos päivityksestä"; emailBodyHtml = "<html><body>" + "<p>Hei " + yrityksen nimi + ",</p>" + "<p>Kiitos päivityksestä! Arvostamme yritystäsi ja palvelemme sinua mielellämme.</p>" + "<p>Ystävällisin terveisin,</p>" + "<p>Yrityksesi</p>" + "</body></html>"; MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Lähetetään 'Curn-asiakasilmoitus' sähköposti osoitteeseen " + sähköposti + ". invoiceAmount1: " + invoiceAmount1); aihe = "Curn customer report"; emailBodyHtml = "<html><head><tyyli>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".laskun tiedot {fontin paino: lihavoitu; väri: #4a4a4a;}" + "</style></head><body>" + "<p>Hei " + yrityksen nimi + ",</p>" + "<p>Olemme huomanneet, että laskusi summa on 0 dollaria. Olemme pahoillamme, että poistut, ja arvostamme palautetta siitä, miksi olet päättänyt lopettaa palveluidemme käytön.</p>" + "<p>Jos voimme tehdä jotain palveluidemme parantamiseksi tai yrityksesi takaisin saamiseksi, ilmoita siitä meille.</p>" + "<p>Kiitos menneestä liiketoiminnasta.</p>" + "</body></html>"; MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody:emailBodyHtml }); } else { console.log("Lähetetään 'Laskumuistutus' sähköposti osoitteeseen " + sähköposti + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); aihe = "Laskumuistutus"; emailBodyHtml = "<html><head><tyyli>" + "body {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".laskun tiedot {fontin paino: lihavoitu; väri: #4a4a4a;}" + "</style></head><body>" "<p>Hei <span class='invoice-info'>" + yrityksen nimi + "</span>,</p>" + "<p>Tämä on muistutus siitä, että lasku #<span class='lasku-info'>" + laskun numero + "</span> $<span class='invoice-info'>" + invoiceAmount1 + "</span> erääntyy <span class='invoice-info'>" + eräpäivä + "</span>.</p>" + "<p>Etsi liitteenä oleva lasku.</p>" + "<p>Kiitos nopeasta huomiostasi tähän asiaan.</p>" + "</body></html>"; // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskut on tallennettu. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml, liitteet: [invoiceFile] }); } } }</p>" + "</body></html>"; // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskut on tallennettu. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml, liitteet: [invoiceFile] }); } } }</p>" + "</body></html>"; // Liitä vastaava lasku - Sinun on annettava oikea kansion tunnus, johon laskut on tallennettu. var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // Olettaen, että laskutiedostot ovat PDF-muodossa var invoiceFile; if (invoiceFiles.hasNext()) { laskutiedosto = invoiceFiles.next(); } else { // Jos laskutiedostoa ei löydy, voit ohittaa tämän rivin tai kirjata virheilmoituksen console.error("Laskutiedostoa ei löydy laskun numerolle: " + invoiceNumber); jatkaa; } MailApp.sendEmail({ vastaanottaja: sähköposti, aihe: aihe, htmlBody: emailBodyHtml, liitteet: [invoiceFile] }); } } }

Alas koodikatkoon 

1. Skripti alkaa hakemalla viittauksia sekä Sheet1:een että Sheet2:een.

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

2. Sitten se hakee tiedot molemmista taulukoista alkaen toisesta rivistä ja jättää pois otsikot.

var tietoalue1 = taulukko1.getAlue(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var tietoalue2 = taulukko2.getAlue(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var data1 = tietoalue1.getArvot(); var data2 = dataRange2.getValues();

3. Skripti toistuu rivien yli molemmissa taulukoissa (olettaen, että rivien määrä on sama molemmissa taulukoissa). Se vertaa kunkin vastaavan rivin laskun summia Taulukko1:stä ja Taulukko2:sta.

for (var i = 0; i < data1.length; i++) { var rivi1 = data1[i]; var rivi2 = data2[i]; // Hae laskun summat molemmista taulukoista var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', ' 39;.'));

Kopio

4. Skripti tarkistaa sitten erityyppisten sähköpostien lähettämisen ehdot Taulukko1- ja Taulukko2-laskujen summien vertailun perusteella.

if (invoiceAmount1 < invoiceAmount2) { // Lähetä "Kiitos päivityksestä" sähköposti } else if (invoiceAmount1 == 0) { // Lähetä "Curn customer report" sähköposti } else { // Lähetä "Laskumuistutus" sähköposti }

Kopio

Keskeinen vertailu on , joka tarkistaa, onko laskun summa taulukossa 1 pienempi kuin saman rivin (eli saman asiakkaan) laskun summa Taulukko2:ssa. Jos tosi, komentosarja olettaa, että asiakas on päivittänyt ja lähettää sähköpostin. Muussa tapauksessa se tarkistaa muut ehdot (vaihtuvuus tai tavalliset laskumuistutukset) ja lähettää asianmukaisen email.if (invoiceAmount1 < invoiceAmount2)"Kiitos päivityksestä"

Kun Google Sheets -tiedosto päivitetään

Nyt kannattaa keskustella hieman erilaisesta käyttötapauksesta, jossa muut ihmiset kuin tilivastaava pääsevät käsiksi laskentataulukkoon. 

Oletetaan, että tilivastaavallamme on päivä, joka on omistettu asiakkaiden tapaamiseen ja heidän kysymyksiinsä vastaamiseen. Asiakkailla on käytettävissään laskentataulukko, jossa he voivat kuvailla ongelmaa lyhyesti ja varata paikan. 

Okei, on paljon parempia tapoja käsitellä asiakkaiden varauksia ja tiedusteluja. Mutta pysymme tässä lähestymistavassa opetusohjelman vuoksi.

Vaihe 1

Ensin meidän on luotava taulukko. Kuten alla näkyy, meidän on melko yksinkertainen, ja se sisältää vain kolme riviä Managerilla, aikavälillä ja kyselyllä.

Vaihe 2

Seuraavaksi tarvitset Google-skriptejä, jotka käynnistävät sähköpostit aina, kun joku päivittää taulukkoa kyselyllään ja varaa siten paikan. Tässä on esimerkki. 

//@OnlyCurrentDoc-funktion prosessiEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, aihe: "Uusi varaus -- asiakkaan aika", body: "Asiakkaalla on sinulle kysymys." }); }

Kopio

Jotta ymmärtäisit, mitä tapahtuu, kannattaa keskustella tärkeimmistä toiminnoista. 

  • //@OnlyCurrentDoc – tämä merkintä osoittaa, että haluat skriptin toimivan vain määritetyssä Google Sheetissa. Huomautuksen poistaminen otti komentosarjan käyttöön muissa tiedostoissasi. 
  • funktion prosessiMuokkaa () – triggeri (määritämme seuraavassa vaiheessa) suorittaa komentosarjan tällä funktiolla. Yksinkertaisesti toiminto määrittää prosessin, jotta saat sähköpostin aina, kun joku päivittää taulukkoa.
  • (e) – tämä merkintä edustaa objektia muokkaustietojen kanssa. Siinä on alueominaisuus, joka ilmoittaa, että aluetta tai solua on muokattu. 
  • MailApp – objekti, jota toiminto käyttää sähköpostin välittämiseen. 

Ennen kuin jatkat, voit testata arkkia ja koodia. Jos käytät esimerkillistä taulukkoa, täytä vain yksi Kysely-sarakkeen soluista ja suorita komentosarja. Sähköpostin pitäisi saapua postilaatikkoosi välittömästi, mutta muista, että komentosarjaa ei ole vielä automatisoitu.

Vaihe 3

On aika asettaa ja valtuuttaa laukaisin lähettämään sähköpostit automaattisesti. Napsauta Apps Scriptin sivuvalikon herätyskellokuvaketta. Napsauta sitten ”…luo uusi triggeri”. 

Valitse liipaisimen määritysponnahdusikkunasta seuraavat ehdot.

  • käsittely Muokkaa
  • Pää
  • Laskentataulukosta
  • Muokkauksessa

Huomaa: Ei voi, jos pidät virheilmoitusasetukset oletuksena, mutta voit muuttaa että tarvittaessa. Se ei vaikuta liipaisimen tai komentosarjan yleiseen toimintaan. Tämä voi koskea kaikkia Google-skriptejä, jotka haluat ehkä automatisoida. 

Napsauta Tallenna, valtuuta triggeri tililläsi, niin näet sen  Triggerit luettelo. Muista myös painaa Ota käyttöön -painiketta aktivoidaksesi liipaisimen. 

Nyt voit palata taulukkoon, täyttää toisen solun Kysely-sarakkeessa ja tarkistaa, oletko saanut automaattisen ilmoituksen. 

Sivuhuomautus: Voit muokata taulukkoa mieltymystesi mukaan, mutta tämä tarkoittaa, että myös komentosarjaa on mukautettava.

Tags: #MITEN

Leave a Comment

Xbox 360 -emulaattorit Windows PC:lle asennetaan vuonna 2022 – [10 PARHAAT POINTA]

Xbox 360 -emulaattorit Windows PC:lle asennetaan vuonna 2022 – [10 PARHAAT POINTA]

Tässä artikkelissa on luettelo 10 parhaasta Xbox 360 -emulaattorista Windows PC:lle. Opit, miten voit nauttia Xbox 360 -peleistä helposti Windows 10 -tietokoneella.

[100 % ratkaistu] Kuinka korjata Error Printing -viesti Windows 10:ssä?

[100 % ratkaistu] Kuinka korjata Error Printing -viesti Windows 10:ssä?

Tulostusvirheviestin vastaanottaminen Windows 10 -järjestelmässäsi ja noudata sitten artikkelissa annettuja korjauksia ja saat tulostimesi oikeilleen…

Microsoft Teams -tallenteen tallentaminen ja toistaminen

Microsoft Teams -tallenteen tallentaminen ja toistaminen

Voit palata kokouksiin helposti, jos tallennat ne. Näin voit tallentaa ja toistaa Microsoft Teams -tallenteen seuraavaa kokousta varten.

Kuinka palauttaa oletussovellukset Androidissa

Kuinka palauttaa oletussovellukset Androidissa

Kun avaat tiedoston tai napsautat linkkiä, Android-laitteesi valitsee oletussovelluksen sen avaamiseksi. Voit palauttaa oletussovelluksesi Androidissa tämän oppaan avulla.

KORJAATTU: Entitlement.diagnostics.office.com-sertifikaattivirhe

KORJAATTU: Entitlement.diagnostics.office.com-sertifikaattivirhe

KORJAATTU: Entitlement.diagnostics.office.com-sertifikaattivirhe

10 parasta pelisivustoa, joita koulu ei estänyt vuonna 2022

10 parasta pelisivustoa, joita koulu ei estänyt vuonna 2022

Saadaksesi selville parhaat pelisivustot, joita koulut eivät ole estäneet, lue artikkeli ja valitse paras lukitsemattomien pelien verkkosivusto kouluille, korkeakouluille ja töille

KORJAATTU: Tulostin on virhetilassa [HP, Canon, Epson, Zebra & Brother]

KORJAATTU: Tulostin on virhetilassa [HP, Canon, Epson, Zebra & Brother]

Jos kohtaat tulostimen virhetilan ongelman Windows 10 -tietokoneessa etkä tiedä, kuinka käsitellä sitä, korjaa se seuraamalla näitä ratkaisuja.

Chromebookin varmuuskopiointi (2022)

Chromebookin varmuuskopiointi (2022)

Jos mietit, kuinka voit varmuuskopioida Chromebookisi, me autamme sinua. Lisätietoja siitä, mikä varmuuskopioidaan automaattisesti ja mitä ei ole täällä

Kuinka korjata Xbox-sovellus, joka ei avaudu Windows 10:ssä [PIKAOPAS]

Kuinka korjata Xbox-sovellus, joka ei avaudu Windows 10:ssä [PIKAOPAS]

Haluatko korjata Xbox-sovelluksen, joka ei avaudu Windows 10:ssä, ja seuraa korjauksia, kuten Ota Xbox-sovellus käyttöön Palveluista, nollaa Xbox-sovellus, Palauta Xbox-sovelluspaketti ja muut.

Mikä on LogiOptions.exe (UNICODE) ja onko prosessi turvallinen?

Mikä on LogiOptions.exe (UNICODE) ja onko prosessi turvallinen?

Jos sinulla on Logitechin näppäimistö ja hiiri, näet tämän prosessin käynnissä. Se ei ole haittaohjelma, mutta se ei ole välttämätön suoritettava tiedosto Windows-käyttöjärjestelmälle.