Google Apps Script – wysyłka email

Co znajdziesz w tym artykule

W tym artykule pokaże Ci 2 sposoby na skuteczną wysyłkę email w Twojej aplikacji Apps Script, dodatkowo omówię kwestie związane z limitami wysyłki dla kont standardowych oraz Workspace.

Jak wysłać email w Apps Script?

Aby wysłać email w Apps Script potrzebujesz wykorzystać jedną funkcję z klasy MailApp – sendEmail. Funkcja sendEmail pobiera trzy parametry – adres e-mail na który ma zostać wysłana wiadomość, tytuł wiadomości oraz treść wiadomości. Email może zostać wysłany w formacie HTML, lub plain-text.

MailApp.sendEmail({to: 'jan@email.com', subject: 'Tytul e-mail', htmlBody: htmlMessage })

Aby zbudować wiadomość e-mail w HTML możesz skorzystać z dwóch sposobów:

Łączenie tekstu z wykorzystaniem operatora +=

function sendHtmlMailWithPlus() {
  Łęt htmlBody = "";
  htmlBody += "<h1 style='color:blue'>Witaj!</h1>";
  htmlBody += "<p>To jest <b>wiadomość testowa</b> wysłana z Google Apps Script.</p>";
  htmlBody += "<p>Możesz dodać link: <a href='https://www.google.com'>Google</a></p>";

  MailApp.sendEmail({
    to: "adres@domena.com",
    subject: "Test MailApp HTML (+)",
    htmlBody: htmlBody
  });
}

Wykorzystanie literału szablonowego „

Do tworzenia wiadomości w HTML możesz wykorzystać również literał szablonowy „ i umieszczać wewnątrz jego zmienne wykorzystując ${variableName}.


function sendHtmlMailWithTemplateString() {
  const htmlBody = `
    <h1 style="color:green">Witaj!</h1>
    <p>To jest <b>wiadomość testowa</b> wysłana z Google Apps Script.</p>
    <p>Możesz dodać link: <a href="https://www.google.com">Google</a></p>
  `;

  MailApp.sendEmail({
    to: "adres@domena.com",
    subject: "Test MailApp HTML (``)",
    htmlBody: htmlBody
  });
}

// z wykorzystaniem 

Tworzenie dynamicznych wiadomości

Podczas pracy z Apps Script często masz za zadanie utworzyć dynamiczną wiadomość e-mail, tworzyć wiadomości możesz podobnie jak wcześniej wykorzystując operator += lub literał szablonowy z połączeniem funkcji tablicowej map.

// budowanie za pomocą +=

function sendDynamicMailWithPlus() {
  var users = ["Ala", "Bartek", "Celina"];
  var htmlBody = "<h2>Lista użytkowników</h2>";
  htmlBody += "<ul>";

  for (var i = 0; i < users.length; i++) {
    htmlBody += "<li>" + users[i] + "</li>";
  }

  htmlBody += "</ul>";

  MailApp.sendEmail({
    to: "adres@domena.com",
    subject: "Dynamiczna lista (+)",
    htmlBody: htmlBody
  });
}

// budowanie za pomocą literału szablonowego

function sendDynamicMailWithTemplate() {
  var users = ["Ala", "Bartek", "Celina"];
  var listItems = users.map(user => `<li>${user}</li>`).join("");

  var htmlBody = `
    <h2>Lista użytkowników</h2>
    <ul>
      ${listItems}
    </ul>
  `;

  MailApp.sendEmail({
    to: "adres@domena.com",
    subject: "Test MailApp HTML (``)",
    htmlBody: htmlBody
  });
}

MailApp vs GmailApp

Google daje nam możliwość korzystania z dwóch klas do wysyłki e-mail – MailApp oraz GmailApp. Poniżej znajdziesz porównanie funkcjonalności poszczególnych klas. Do większości projektów wystarczającą klasą będzie MailApp, przy bardziej skomplikowanych projektach możesz sięgnąć po GmailApp.

Cecha / FunkcjaMailAppGmailApp
Podstawowe przeznaczenieProsta wysyłka wiadomości e-mail (np. z formularzy, raportów, skryptów automatycznych).Bardziej zaawansowana obsługa Gmaila – odczyt, wysyłka, etykiety, wątki, zarządzanie skrzynką.
Wysyłanie e-mailiMailApp.sendEmail(recipient, subject, body) lub z obiektem opcji (cc, bcc, htmlBody, attachments).GmailApp.sendEmail(recipient, subject, body, options) – działa podobnie jak MailApp, ale jest częścią API Gmaila.
Obsługa HTMLTak – opcja htmlBody w obiekcie.Tak – opcja htmlBody w obiekcie.
ZałącznikiTak – opcja attachments.Tak – opcja attachments.
Dostęp do wysłanych e-mailiNie – MailApp tylko wysyła, nie daje dostępu do skrzynki.Tak – GmailApp pozwala później znaleźć wysłane wiadomości, wątki, etykietować itp.
Uprawnienia (Scopes)Wymaga mniejszych uprawnień (https://www.googleapis.com/auth/script.send_mail).Wymaga szerszych uprawnień do całej skrzynki Gmaila (https://mail.google.com/).
Wydajność / prostotaLżejsze i szybsze do prostych automatyzacji.Większy narzut – ale pozwala na integrację z całym Gmailem.
Limity dzienneTakie same jak Gmail – zależą od typu konta (np. 1500 maili/dzień w Google Workspace).Takie same limity, bo to Gmail API.

Limity dzienne

Wielu początkujących użytkowników Apps Script mierzy się z problemem limitów dziennych. Zwykłe konta gmail mogą wysłać dziennie 100 wiadomości e-mail – limit ten resetowany jest po 24h, nie o północy.

W przypadku kont Google Workspace – użytkownicy mogą wysłać 1500 wiadomości dziennie – musisz jednak liczyć się z ograniczeniami dla nowych kont o czym za chwilę. Jeśli nie chcesz korzystać z płatnego konta Google Workspace, to możesz wysyłać wiadomości e-mail w paczkach np. po 100 każdego dnia np. o godzinie 8. Aby to osiągnąć w swoim arkuszu musisz dodać dodatkową kolumnę, w której będzie informacja na temat statusu wysyłki.

Ograniczenia dla nowych kont Workspace / G Suite

Dla wszystkich nowych kont Workspace występują ograniczenia w wysyłce email:

Jeśli przejdziesz z bezpłatnego konta próbnego na płatną subskrypcję, limity obowiązujące na koncie automatycznie ulegają zwiększeniu. Dzieje się tak jednak tylko wówczas, gdy:

  • łączna płatność za Twoją domenę wyniosła co najmniej 100 USD (lub równowartość tej kwoty w innej walucie),
  • od osiągnięcia tego progu płatności minęło co najmniej 60 dni.

To oznacza, że Twoje konto będzie posiadało ograniczenie wysyłki e-mail do 100 jak regularne konta do póki nie wydasz na usługi Google Workspace co najmniej 100 USD (w przeliczeniu na PLN). Dodatkowym wymogiem stawianym przez Google jest posiadanie konta co najmniej przez 60 dni od osiągnięcia limitu płatności (100 USD = 365,18 zł).

Jeśli chcesz szybciej osiągnąć wymagany próg, to możesz zwiększyć ilośc kont w obrębie swojej domeny lub zwiększyć pakiet posiadanego konta. Plany Google Workspace prezentują się następująco:

StarterStandardPlusEnterprise Plus
31,50 zł63 zł99 zł157,50

Przy płatności rocznej za konto od razu nawet dla konta Starter osiągniesz wymagany próg. W przypadku opłaty miesięcznej musisz liczyć się z dodatkowym okresem oczekiwania.

Jeśli potrzebujesz pomocy z wdrożeniem Google Apps Script w swojej firmie, przejdź do zakładki kontakt i uzyskaj profesjonalne wsparcie. Możesz również sprawdzić jakie projekty mieliśmy okazję realizować w Apps Script na tej stronie.

Podobne wpisy