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.
- 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”.
- Dostosuj ustawienia wyzwalacza, aby uruchamiać skrypt co godzinę (lub tak często, jak chcesz), a następnie przewiń w dół i kliknij „Zapisz”.
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.
- 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”.
- Zaznacz „Zastosuj etykietę”, wybierz „Wyślij tekst” i kliknij „Utwórz filtr”.
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.
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.
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ń
startDate
na 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,
emailsToGet
lub słowa kluczowe i etykiety za pomocą zmiennejkeywords
. - Zapisz skrypt i ustaw wyzwalacz uruchamiany co kilka minut lub godzin.
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