Automatyzacja Gmaila: 8 przydatnych skryptów Google do automatyzacji Gmaila

Automatyzacja Gmaila: 8 przydatnych skryptów Google do automatyzacji Gmaila

Gmail sam w sobie jest już bardzo potężnym klientem poczty e-mail. Za pomocą filtrów możesz skonfigurować automatyzację, aby lepiej zorganizować swoją skrzynkę odbiorczą. Jednak dla zaawansowanych użytkowników funkcja filtrowania nie jest wystarczająca w porównaniu z pisaniem niestandardowych skryptów. Te osiem skryptów Google może jeszcze bardziej zautomatyzować Twój Gmail.

1. Automatyczne usuwanie wiadomości e-mail po X dniach

Bardzo często po przeczytaniu e-maili po prostu przechowujemy je w skrzynce odbiorczej, niezależnie od tego, jak bardzo są przydatne. Teraz, gdy Google ograniczyło miejsce, możesz wyczyścić swoją skrzynkę odbiorczą i pozbyć się tych bezużytecznych e-maili. Poniższy skrypt może sprawdzać wiadomości e-mail z etykietą „Usuń mnie” i usuwać je po „X” liczbie dni.

  • Upewnij się, że jesteś zalogowany na swoje konto Google, przejdź do Skryptów Google i utwórz nowy projekt.
Zautomatyzuj nowy projekt Gmaila
  • Wklej poniższy skrypt i zapisz go. Możesz zmienić liczbę dni (zmienna delayDays), które upływają, zanim wiadomości e-mail zostaną usunięte z Twojej skrzynki odbiorczej.

function auto_delete_mails() {
var label = GmailApp.getUserLabelByName("Delete Me");
if(label == null) {
GmailApp.createLabel('Delete Me');
}
else {
var delayDays = 2; // Enter # of days before messages are moved to trash
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()<maxdate) {
threads[i].movetotrash();
}
}
}}

  • Utwórz nowy wyzwalacz, aby uruchamiać skrypt zgodnie z harmonogramem. Otwórz „ikonę harmonogramu w menu po lewej stronie -> Wyzwalacze -> Dodaj wyzwalacz”.
Zautomatyzuj wyzwalacze Gmaila
  • Dostosuj ustawienia wyzwalacza, aby uruchamiać skrypt co godzinę (lub tak często, jak chcesz), a następnie przewiń w dół i kliknij „Zapisz”.
Zautomatyzuj wyzwalacz dodawania Gmaila

Po uruchomieniu tego skryptu utworzy nową etykietę „Usuń mnie” na koncie Gmail. Oznacz niechciane wiadomości e-mail tą etykietą, a zostaną one usunięte po liczbie dni określonej w skrypcie.

2. Zarchiwizuj wszystkie stare e-maile

Jeśli potrzebujesz opcji mniej niebezpiecznej niż usuwanie wiadomości e-mail, możesz utworzyć skrypt do archiwizacji wszystkich starych wiadomości e-mail, wykonując poniższe czynności.

  • Utwórz nowy skrypt Google z następującym kodem:

function archiveOldEmails() {
// Get all the threads in the inbox
var threads = GmailApp.getInboxThreads();

// Loop through all the threads
for (var i = 0; i < threads.length; i++) {
var thread = threads[i];
var messages = thread.getMessages();

// Loop through all the messages in the thread
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var age = (new Date() - message.getDate()) / (1000 * 60 * 60 * 24);

// If the message is older than 30 days, archive it
if (age > 30) {
thread.moveToArchive();
}
}
}}

  • Utwórz wyzwalacz (jak pokazano powyżej), aby codziennie uruchamiać skrypt.

W wybranym przez Ciebie czasie skrypt uruchomi się i przeniesie e-maile z Twojej skrzynki odbiorczej do archiwum. Te zarchiwizowane e-maile będą nadal dostępne w sekcji „Cała poczta”.

3. Otrzymuj powiadomienia SMS o ważnych wiadomościach e-mail

Ten skrypt Google korzysta z funkcji SMS Kalendarza Google, aby wysłać Ci SMS-a, gdy otrzymasz ważną wiadomość e-mail.

  • Utwórz nowy skrypt Google z następującym kodem:

function Gmail_send_sms(){
var label = GmailApp.getUserLabelByName("Send Text");
if(label == null){
GmailApp.createLabel('Send Text');
}
else{
var threads = label.getThreads();
var now = new Date().getTime();
for (var i = 0; i < threads.length; i++) {
var message = threads[i].getMessages()[0];
var from = message.getFrom();
var subject = message.getSubject();
CalendarApp.createEvent(subject, new Date(now+60000), new Date(now+60000), {location: from}).addSmsReminder(0);
}
label.removeFromThreads(threads);
}}

  • Zapisz go i utwórz wyzwalacz, aby był uruchamiany co pięć minut.
  • Utwórz nowy filtr Gmaila, który automatycznie doda etykietę „Wyślij tekst” do wybranych przychodzących e-maili. W Gmailu kliknij ikonę Opcje wyszukiwania na górnym pasku wyszukiwania.
Zautomatyzuj opcje paska wyszukiwania Gmaila 2 1
  • Dostosuj kryteria powiadomień SMS, które poinformują Cię o ważnych wiadomościach e-mail w skrzynce odbiorczej, a następnie kliknij „Utwórz filtr”.
Zautomatyzuj filtry wyszukiwania w Gmailu 2
  • Zaznacz „Zastosuj etykietę”, wybierz „Wyślij tekst” i kliknij „Utwórz filtr”.
Zautomatyzuj Gmail 2 Filtruj Wyślij tekst

Skrypt będzie skanował Twoją skrzynkę odbiorczą co pięć minut. Gdy wykryje wiadomość e-mail z etykietą „Wyślij tekst”, natychmiast utworzy wydarzenie w Kalendarzu Google, które uruchomi SMS-a

4. Utwórz podsumowanie swoich e-maili

Zamiast czytać wszystkie wiadomości e-mail z osobna, możesz napisać skrypt, który utworzy pojedyncze podsumowanie nieprzeczytanej wiadomości e-mail.

  • Utwórz nowy skrypt Google z następującym kodem:

function createEmailSummary() {
// Search for unread emails
var threads = GmailApp.search("is:unread");
var summary = "Unread Emails:\n";
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
summary += message.getFrom() + ": "+ message.getSubject() + "\n";
}
}

// Search for emails with specific keywords in the subject
var threads = GmailApp.search("subject:(important meeting)");
summary += "\nEmails with keyword 'important meeting' in the subject:\n";
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
summary += message.getFrom() + ": "+ message.getSubject() + "\n";
}
}

// You can add more search criteria here
//. ..

// Send the summary as an email
GmailApp.sendEmail("[email protected]", "Email Summary", summary);}

  • Zmień „ [chroniony e-mailem] ” na swój adres e-mail.
  • Utwórz nowy wyzwalacz, aby codziennie uruchamiać skrypt.
Zautomatyzuj przykład podsumowania Gmaila 4

Gdy skrypt zostanie uruchomiony, wyśle ​​​​Ci wiadomość e-mail zawierającą liczbę wiadomości e-mail każdego typu, których jeszcze nie przeczytałeś. Powyższy skrypt to dobry punkt wyjścia – zlicza e-maile z tematem „ważne spotkanie”. Możesz dostosować skrypt, aby policzyć żądane kryteria wyszukiwania.

5. Zapisz e-mail jako pliki PDF na Dysku Google

Jeśli masz wiadomość e-mail, którą chcesz zarchiwizować na Dysku Google, możesz użyć skryptu Google, aby zapisać ją jako plik PDF na swoim koncie Dysku Google. Poniższy skrypt zapisze wszystkie wiadomości w wątku e-mail jako jeden plik PDF na Twoim Dysku Google. Jeśli wiadomość e-mail zawiera załączniki, utworzy folder i zapisze w nim wiadomości i załączniki.

  • Utwórz nowy skrypt Google z następującym kodem:

function save_Gmail_as_PDF() {
// Get the label "Save As PDF"or create it if it doesn't exist
var label = GmailApp.getUserLabelByName("Save As PDF");
if(label == null){
label = GmailApp.createLabel('Save As PDF');
}

// Get the threads with the label
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var subject = messages[0].getSubject();
var bodys = [];
// Loop through all messages in thread
for(var j = 0; j < messages.length; j++){
var message = messages[j];
bodys.push({
body: message.getPlainBody(),
from: message.getFrom(),
});
var attachments = message.getAttachments();
var temp_attach = message.getAttachments();
if(temp_attach.length > 0){
for(var k =0; k < temp_attach.length; k++){
attachments.push(temp_attach[k]);
}
}
}
// Create a Google Docs document from the message body
var bodyDoc = DocumentApp.create(subject);
var bodyDocId = bodyDoc.getId();
var bodyDocFile = DriveApp.getFileById(bodyDocId);
var bodyDocBody = bodyDoc.getBody();
bodyDocBody.setText(bodys.map(obj => `From: ${obj.from}\n${obj.body}`).join('\n\n'));
bodyDoc.saveAndClose();

// Convert the Google Docs document to a PDF
var blob = bodyDocFile.getAs('application/pdf');
var pdfFile = DriveApp.createFile(blob);

// If there are attachments
if(attachments.length > 0){
// Create a folder in Drive with the message subject
var folder = DriveApp.createFolder(subject);
for (var j = 0; j < attachments.length; j++) {
folder.createFile(attachments[j]);
}
// Add the PDF file of the message body to the folder
folder.createFile(pdfFile);
}
// Remove the Google Docs document from Google Drive
DriveApp.getFileById(bodyDocId).setTrashed(true);
// Remove the label from the thread
label.removeFromThread(threads[i]);
}
}

  • Zapisz go i ustaw wyzwalacz, aby uruchamiał się w regularnych odstępach czasu.
Zautomatyzuj Gmaila 5 Zapisany e-mail Pdf

Jeśli chcesz zapisać wiadomość e-mail i jej załączniki na Dysku Google, po prostu oznacz ją etykietą „Zapisz w formacie PDF”. Treść każdego e-maila i nadawca w każdym wątku będą wyświetlane w kolejności, zaczynając od najstarszego.

6. Automatycznie wysyłaj kolejne e-maile

Nie zawsze możesz otrzymać szybką odpowiedź na swoje e-maile. Aby rozwiązać ten problem, możesz wysłać wiadomość e-mail z przypomnieniem adresatom wiadomości e-mail. Zamiast ręcznie pisać każdy followup, możesz wysłać go automatycznie za pomocą skryptu!

  • Utwórz nowy skrypt Google z następującym kodem:

function sendFollowupEmails() {
const startDate = new Date('2023-01-01');

const daysAgo = 3;
var dateInPast = new Date();
dateInPast.setDate(dateInPast.getDate() - daysAgo);

var threads = GmailApp.search("is:sent before:"+ dateInPast.toLocaleDateString() + "after:"+ startDate.toLocaleDateString());

for (var i = 0; i < threads.length; i++) {
var conversation = threads[i];

var foundResponse = false;
// If a sent thread has more than 1 email, we don’t need to followup
// because we either followed up already or they responded.
if (conversation.getMessages().length > 1) {
foundResponse = true;
}

if (!foundResponse) {
var body = "Hi, I just wanted to follow up on my previous email. If I get no reply I will assume you are not interested. \n\nBest regards,\n[Your Name]";
conversation.replyAll(body);
}
}}

  • Dostosuj kilka rzeczy w tym skrypcie:
  • Zmień startDatena czas bliższy teraźniejszości, aby nie wskrzeszać bardzo starych wątków.
  • Zmień daysAgo, aby dostosować wiek wiadomości e-mail przed wysłaniem kontynuacji.
  • Zmień [Your Name]na swoje imię.
  • Zapisz go i ustaw wyzwalacz uruchamiany co siedem dni.

Kontynuuj wysyłanie e-maili normalnie, a skrypt automatycznie zajmie się dalszymi działaniami.

7. Oznacz wiadomości e-mail według słowa kluczowego tematu

Jeśli zostaniesz zasypany wiadomościami e-mail, ale nie chcesz usuwać większości z nich, możesz użyć tego skryptu do oznaczania i organizowania ich na podstawie ich zawartości.

  • Utwórz nowy skrypt Google z następującym kodem:

function categorizeEmails() {
const emailsToGet = 50;
var keywords = {
"promo": "Promotions",
"offer": "Promotions",
"discount": "Promotions",
"newsletter": "Newsletters",
"action": "Todo",
"required": "Todo",
"shipped": "Orders",
"delivered": "Orders",
"receipt": "Orders",
"invoice": "Orders"
};

var threads = GmailApp.getInboxThreads(0, emailsToGet);

for (var i = 0; i < threads.length; i++) {
var subject = threads[i].getFirstMessageSubject().toLowerCase();
var labels = GmailApp.getUserLabels();
var foundLabel = false;

for (var keyword in keywords) {
if (subject.indexOf(keyword)! == -1) {
for (var j = 0; j < labels.length; j++) {
if (labels[j].getName() === keywords[keyword]) {
threads[i].addLabel(labels[j]);
foundLabel = true;
break;
}
}

if (!foundLabel) {
GmailApp.createLabel(keywords[keyword]);
threads[i].addLabel(GmailApp.getUserLabelByName(keywords[keyword]));
}

break;
}
}
}}

  • Możesz dostosować liczbę e-maili, których dotyczy zmienna, emailsToGetlub słowa kluczowe i etykiety za pomocą zmiennej keywords.
  • Zapisz skrypt i ustaw wyzwalacz uruchamiany co kilka minut lub godzin.
Zautomatyzuj e-maile Gmail 7 oznaczone według tematu

Dzięki temu możesz być na bieżąco, przeglądając tylko e-maile z określoną etykietą. Ten skrypt działa dobrze na większości twoich e-maili, oszczędzając ci po prostu ich usunięcia.

8. Przekaż określone wiadomości e-mail na wiele innych adresów

Chociaż Gmail ma wbudowany sposób przekazywania wiadomości e-mail na inny adres e-mail, nie może łatwo przekazywać wiadomości e-mail z określonymi kryteriami na wiele adresów e-mail, ale ten skrypt to umożliwia.

  • Utwórz nowy skrypt z następującym kodem:

function emailForwarding() {
const emailsToGet = 50;
var criteria = [
{
sender: "[email protected]",
subjectContains: "invoice",
forwardTo: ["[email protected]", "[email protected]"]
},
{
sender: "[email protected]",
subjectContains: "urgent",
forwardTo: ["[email protected]", "[email protected]"]
}
];

var label = GmailApp.getUserLabelByName("Forwarded");
if (!label) {
label = GmailApp.createLabel("Forwarded");
}

var threads = GmailApp.search("is:inbox", 0, emailsToGet);
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
console.log('thread id:', threads[i].getId());
for (var j = 0; j < messages.length; j++) {

var message = messages[j];
var sender = message.getFrom();
var subject = message.getSubject().toLowerCase();
console.log('sender', sender, 'subject', subject);
for (var k = 0; k < criteria.length; k++) {
var rule = criteria[k];
if (sender.indexOf(rule.sender)! = -1 && subject.indexOf(rule.subjectContains)! = -1) {
var recipient = rule.forwardTo.join(",");
GmailApp.sendEmail(recipient, subject, message.getPlainBody(), {cc: sender});
threads[i].addLabel(label);
}
}
}
}}

  • Dostosuj kryteria według potrzeb.
  • Utwórz wyzwalacz, który będzie uruchamiał skrypt co kilka minut lub godzin.

Twój Gmail będzie automatycznie przekierowywał e-maile spełniające Twoje kryteria na co najmniej dwa adresy e-mail.

Często Zadawane Pytania

Czy Google Apps Script jest darmowy?

Tak, korzystanie ze skryptu Google Apps Script jest bezpłatne, o ile masz konto Gmail. Istnieją jednak dziesiątki przydziałów i ograniczeń dotyczących użytkowania. Google może je zmienić w dowolnym momencie, ale w chwili pisania tego tekstu obejmują one prawie 40 funkcji, takich jak tworzone dokumenty, odczyt/zapis wiadomości e-mail, utworzone arkusze kalkulacyjne i łączny czas działania wyzwalaczy. Darmowe konta mają bardzo niski limit, podczas gdy Google Workspace ma znacznie wyższy limit.

Czy mogę używać Google Apps Script do uzyskiwania dostępu do danych z innych usług?

Tak, Google Apps Script nie ogranicza się do pracy z usługami Google. Uzyskujesz dostęp do danych z zewnętrznych usług innych niż Google w Internecie (na przykład Pokémon API ) za pomocą wbudowanych klas, takich jak UrlFetchApp, w następujący sposób:

var response = UrlFetchApp.fetch("https://pokeapi.co/api/v2/pokemon/ditto");
Logger.log(response.getContentText()); // All details of Ditto would be logged

Co mam zrobić, jeśli w moim skrypcie Aplikacji Google pojawią się błędy?

Możesz debugować swój kod, aby zidentyfikować i naprawić błąd. Na szczęście Google Apps Script ma wbudowany debuger, którego można użyć do rozwiązywania problemów z kodem. Aby z niego skorzystać, po prostu otwórz edytor skryptów i kliknij Debuguj. Stamtąd możesz ustawić punkty przerwania, przejść przez kod i sprawdzić zmienne, aby pomóc zidentyfikować wszelkie problemy.

Źródło obrazu: Pexels . Wszystkie zrzuty ekranu autorstwa Brandona Li.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *