GMail: Włączamy powiadomienia SMS-em o nowej poczcie

21
2514
Moduł sprawdzania pisowni OrphusWidzisz błąd na stronie? Zaznacz i kliknij Ctrl+Enter
GMail - Włączamy powiadomienia SMS-em o nowej poczcie

W GMailu, mimo że jest obecnie najpopularniejszym klientem poczty, nie zrealizowano funkcji wysyłania notyfikacji SMS o nowych mailach.
Posiadacze smartfonów mogą dowiadywać się o nowych mailach dzięki funkcji push e-mail, ale pobiera to dodatkowe megabajty, więc dla niektórych to odpada.

Zobaczmy zatem, jak wykorzystać możliwości Kalendarz Google, aby zorganizować powiadomienia smsowe o nowych wiadomościach w usłudze GMail.

(Obrazek: Our’s Article)

 

Na początek przypominamy, że notyfikacje SMS o nowych wydarzeniach potrafi wysyłać inna aplikacja Google – Kalendarz Google. Warto włączyć tę usługę, jeżeli zdarza nam się zapominać o zaplanowanych spotkaniach.

Jeżeli mamy już podany w Kalendarzu GMail numer telefonu komórkowego, tworzymy na GMailu nową etykietę (korzystanie z etykiet), np. SMS oraz filtr, który będzie oznaczał nową etykietą wszystkie wiadomości przychodzące na nasz adres mailowy.

Otwieramy Dysk Google i klikamy Utwórz>Więcej>Skrypt. Za chwilę dodamy prosty skrypt, ale tytułem wyjaśnienia: skrypt działa w ten sposób, że tworzy nowe wydarzenia w naszym Kalendarzu Google.

1). Jeżeli chcemy, by wydarzenia były kasowane tuż po wysłaniu powiadomienia, wybieramy skrypt nr 1:

Aby uniknąć błędów, wchodzimy do Ustawień Kalendarza Google:
Powiadomienia>Domyślnie przypominaj za pośrednictwem i ustawiamy SMS: 0 min przed każdym wydarzeniem

[stextbox id=”grey” caption=”Skrypt”]

function Notification()
{
var threads = GmailApp.getUserLabelByName(‚SMS’).getThreads(); //zmienna przechowujące kolekcję łańcuszków z naszą etykietą SMS
var now = new Date();
if(threads == 0) return; // zaprzestanie wykonywania, jeżeli brak nowych łańcuszków</code>

for(i in threads) // tworzymy zdarzenia
{
CalendarApp.createEvent(threads[i].getFirstMessageSubject(),
new Date(now.getTime()+60000),
new Date(now.getTime()+60000)).setDescription(‚this-is-sms_notification-mark’);
//this-is-sms_notification-mark – etykieta utworzonego zdarzenia, dzięki której można będzie je znaleźć podczas kasowania
}

GmailApp.getUserLabelByName(‚SMS’).removeFromThreads(threads); //usuwanie etykiety „SMS”

Utilities.sleep(300000);

var TodaysEvents = CalendarApp.getDefaultCalendar().getEventsForDay(now);

for (i in TodaysEvents) // wyszukiwanie według zdarzenia i kasowanie po wysłaniu
{
if (TodaysEvents[i].getDescription()==’this-is-sms_notification-mark’)
TodaysEvents[i].deleteEvent();
}
}

[/stextbox]

2). Można też utworzyć nowy kalendarz, np. „GMail: Powiadomienia SMS” i przechowywać w nim takie zdarzenia. Skrypt nr 2:
[stextbox id=”grey” caption=”Skrypt”]

function my_notification()
{
var calendar = CalendarApp.getOwnedCalendarsByName(’email’)[0]; //otwieramy kalendarz o nazwie „email”

if (!calendar){
calendar = CalendarApp.createCalendar(’email’); //lub tworzymy nowy, jeżeli jeszcze go nie ma
calendar.setHidden(true);
}

var threads = GmailApp.getUserLabelByName(‚SMS’).getThreads(); //zmienna, w której zapisywana jest kolekcja łańcuszków z etykietą SMS
var now = new Date();

if(threads == 0) return; // zaprzestanie wykonywania, jeżeli brak nowych łańcuszków

for(i in threads) // tworzenie zdarzeń
{
calendar.createEvent(threads[i].getFirstMessageSubject(),
new Date(now.getTime()+60000),
new Date(now.getTime()+60000));
}

GmailApp.getUserLabelByName(‚SMS’).removeFromThreads(threads); //usuwanie etykiet „SMS” z łańcuszków
}

[/stextbox]

Po uruchomieniu skryptu wchodzimy do Ustawień Kalendarza Google:
Powiadomienia>Domyślnie przypominaj za pośrednictwem i ustawiamy SMS: 0 min przed każdym wydarzeniem

Po uruchomieniu skryptu wchodzimy do Ustawień Kalendarza Google

Po wklejeniu kodu, tworzymy wyzwalacz dla bieżącego skryptu. Klikamy Zasoby>Wyzwalacze bieżącego skryptu i definiujemy częstotliwość wykonywania, np. 1 h (wartość domyślna, więc wystarczy potwierdzić):

Po wklejeniu kodu, tworzymy wyzwalacz dla bieżącego skryptu

definiujemy częstotliwość wykonywania, np. 1 h

Teraz zgadzamy się na autoryzację:

Teraz zgadzamy się na autoryzację

i uruchamiamy skrypt:

uruchamiamy skrypt

Aby uniknąć ewentualnych błędów usuwamy notyfikację w oknie edytora wyzwalaczy.

  • lajsou@wp.pl

    Temat przestaje być przydatny z tego co widzę Google w Polsce usunęło możliwość powiadomień sms poprzez kalendarz. Pozostały jedynie w ustawieniach powiadomienia pop i e-mail.

  • Gość

    Odświeżę temat: jest jakiś sposób na przekazanie do SMSa kto wysyłał wiadomość (pole FROM) a nie tylko tematu (pole SUBJECT)..?

  • gallanonymous

    Zrobiłem wszystko według 1 skryptu.
    Proszę o pomoc dlaczego otrzymuje podwójne powiadomienia.
    Tzn.
    przychodzi powiadomienie sms a za jakąś minutę przychodzi to samo powtórzone.

    Odstęp czasu mam ustawiony co godzinę.

    • Michał

      Czy rozwiązałeś problem? mam to samo

      • Katarzyna

        mi też przychodzą po dwa smsy. troche wkurzające to jest.. jak naprawić błąd???

  • Przemo600V

    Dobry kod który działa

    function Notification()

    {

    var threads = GmailApp.getUserLabelByName(‚
    SMS’).getThreads(); //zmienna przechowujące kolekcję łańcuszków z naszą etykietą SMS

    var now = new Date();

    if(threads == 0) return; // zaprzestanie wykonywania, jeżeli brak nowych łańcuszków

    for(i in threads) // tworzymy zdarzenia

    {

    CalendarApp.createEvent(threads[i].getFirstMessageSubject(),

    new Date(now.getTime()+60000),

    new Date(now.getTime()+60000)).setDescription(‚this-is-sms_notification-mark’);

    //this-is-sms_notification-mark – etykieta utworzonego zdarzenia, dzięki której można będzie je znaleźć podczas kasowania

    }

    GmailApp.getUserLabelByName(‚SMS’).removeFromThreads(threads); //usuwanie etykiety „SMS”

    Utilities.sleep(300000);

    var TodaysEvents = CalendarApp.getDefaultCalendar().getEventsForDay(now);

    for (i in TodaysEvents) // wyszukiwanie według zdarzenia i kasowanie po wysłaniu

    {

    if (TodaysEvents[i].getDescription()==’this-is-sms_notification-mark’)

    TodaysEvents[i].deleteEvent();

    }

    }

  • LadyMidday

    u mnie działa w większości przypadków;) co jakiś czas dostaję „failure notification”. Może to dlatego, że nie wiem co to znaczy „usuwamy notyfikację w oknie edytora wyzwalaczy”. Tzn. muszę usunąć wyzwalacz, który utworzyłam?

  • fan K1

    Człowieku, albo naucz się programować, albo tłumaczyć te swoje wypociny.
    Ludzie chcą z tego skorzystać i nie mogą, bo wyskakują błędy jak tu kolega napisał bo w programie jest inna nazwa i użytkownik inaczej to uzupełnił u siebie. Debagowanie też nic nie, bo pokazuje całą linijkę, a nie konkretny błąd.
    Wytłumacz to krok po kroku po można orła wywinąć.
    Ten skrypt jest napisany dla takich co mają o tym pojęcie, ale samodzielnie nie napiszą takiego skryptu. Oni będą wiedzieli co poprawić.
    Mam co chwilę błąd w innej linijce i nie wiem co mam zmienić.
    25 lat temu programowałem w Turbo Pascalu i to mi nic nie daje.
    Albo się chce pomóc innym, albo popisać co to ja nie umiem.
    Wiesz do czego się taka pomoc nadaje.
    nara

  • Adrian Łęciński

    Witam, przy tworzeniu skryptu wyskakuje mi ”
    Brak znaku ] za listą elementów. (wiersz 2)”. U mnie wiersz nr 2 to: [stextbox id=”grey” caption=”Skrypt”], bo zaczalem pisac od drugiej linijki.
    Wie ktoś jak to zmienić, żeby było dobrze? Przepisałem skrypt nr2

    • kmaillster

      Kolego usun 1 i ostatnią linike kodu
      I działa :)

  • Piotr Iwaniuk

    a jak usunąć działanie skryptu? usunąłem plik z dysku Google, a wciąż w ustawieniach kalendarza wyświetla mi się kalendarz „email”, co nowa wiadomość na skrzynce to nowy kalendarz „email” , co robić?

    • Gosc__dysqutant

      Pousuwałeś etykiety i kalendarz pod powiadomienia? No właśnie ;)

  • lukaszooo

    A mi to nie działa, poprawiłem błędy w apostrofach, ale i tak mi jakies głupie błedy w 10 wierszu wyskakuja. Nie działa.

  • Szymon Kowalski

    Ja od jakiegoś czasu włączone mam powiadomienia za pomocą tej metody: https://developers.google.com/apps-script/articles/gmail_filter_sms

    Działa bardzo dobrze.

    • fan K1

      Następny cudak. Wszyscy znają angielski, tak ? Dogaduję się po angielsku, ale o pierdołach. Tutaj trzeba znać angielski dobrze.
      Może Chrome coś pomoże.

  • Rock Michałowski

    a mi przyszło takie powiadomienie na maila:
    ReferenceError: „now” is not defined. (line 16)
    i nie bangla :D

  • Toszek

    Fajna sprawa.

    Próbował ktoś już?Mi podczas uruchamiania skryptu wyskakuje błąd:
    Illegal character. (wiersz 3) 
    i zaznaczona jest linia:
    var threads = GmailApp.getUserLabelByName(‘powiadomienia-sms’).getThreads(); //zmienna przechowujące kolekcję łańcuszków z naszą etykietą SMS
    Mam etykietę ‚powiadomienia-sms’ w gmailu…
    Testowałem w „czystym” gmail’u oraz w apps google, rezultat ten sam.
    Może ktoś ma jakieś sugestie?

    • pl_lh

      Odpowiedź masz w swoim komentarzu ;) Skrypt zakłada, że etykieta nazywa się „SMS”. Albo zmień nazwę etykietę, albo popraw odpowiednio wklejony skrypt (kod) ;)

      • Toszek

        Świadomie zmieniłem nazwę zakładki (bo taką już miałem w gmailu) w dwóch miejscach w kodzie, więc myślę, że nazwa zakadki nie powinna mięć wpływu na działanie kodu.
        Jednak probowałem też z nazwą zakładki SMS, tak jak jest w pierwotnym kodzie, (skopiowałem raz jeszcze), ale efekt jest taki sam:
        Illegal character. (wiersz 3) 
        :(

        • Mateusz Kijanka

          Może to kwestia błędnego przeklejenia skryptu bezpośrednio ze strony?

          Mam na myśli zamianę znaków (apostrof przy cudzysłowiu) ‚ i ` (nad tyldą) chociażby w (‚SMS’).
          W całym skrypcie 3 czy 4 razy trzeba to podmienić. Zmianę zauważysz po zmianie koloru w pisanym skrypcie.

          np. 
          var threads = GmailApp.getUserLabelByName(‘SMS’).getThreads(); //zmienna przechowujące kolekcję łańcuszków z naszą etykietą SMS
          zmienić na 
          var threads = GmailApp.getUserLabelByName(‚SMS’).getThreads(); //zmienna przechowujące kolekcję łańcuszków z naszą etykietą SMS 

          • Toszek

            Dzięki Mateusz, faktycznie to był problem apostrofów i cudzysłowów. Pozmieniałem i skrypt ruszył. Teraz czekam na pierwszego maila i powiadomienie sms!
            Jak zadziała to będzie super sprawa! :)