Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
Przesunięty przez: bodek
30-08-2019, 08:53
google sheets - mail o zmianie
Autor Wiadomość
jbak 
forumowicz


Posty: 12
Wysłany: 22-01-2018, 14:36   google sheets - mail o zmianie

Hej,

Mam nadzieję, że jest tu ktoś, kto zna się na arkuszach google'a.
Przygotowałem plik, który jest udostępniony na googlowym serwerze. Korzysta z niego ok. 6 osób. Chciałbym za każdym razem kiedy użytkownicy wprowadzą jakieś miany otrzymywać maila z informacją o zmianach. Początkowo skorzystałem z wbudowanej funkcji Narzędzia -> reguły powiadomień -> powiadomienie za każdym razem, gdy pojawi się zmiana. Z zupełnie nieznanego mi powodu plik zaczął generować mi ok. 60 maili dziennie z informacją o zmianie, która nie miała miejsca. Ostatecznie dostawałem stos maili generowanych bezpodstawnie i maile z faktycznymi zmianami. Wycofałem się z tego rozwiązania.

Napisałem prosty skrypt, który załatwił po częsci sprawę (trigger onEdit):

Kod:
function onEdit(e){
 var me = Session.getActiveUser().getEmail();

   GmailApp.sendEmail('xxx@gmail.com', 'Pojawiła się zmiana w rezerwacjach sprzętu', 'User ' + me + ' wprowadził zmianę w pliku');

}


Skrypt działa poprawnie i jest odpalany tylko wtedy, gdy pojawia się zmiana. Problem w tym, że jeden użytkownik wprowadza średnio 20 zmian na raz (w czasie ok. 5min), co oznacza, że za kązdym razem mam ok. 20 maili :)

Chciałbym to jakoś rozwiązać i grypować te maile. Moje skromne umiejętności pozwoliy mi na napisanie skryptu (trigger onOpen, onEdit i trigger sendMail -> co 5min):
Kod:

var a;

function onOpen(){
  a = 0;
}

function onEdit(){
  a++;
}

function sendMail(){
 if(a > 0){
   GmailApp.sendEmail('xxx@gmail.com', 'aaa', 'sss ');
   a = 0;
  }
}


Okazuje się jednak, że funkcja onEdit dodwaje wartości do zmiennej a, ale tylko w funkcji. Tak długo jak funkcja jest wykonywana wartości są zmienione. Zaraz po tym ma ona wartość NaN.

Bardzo proszę, czy jest ktoś w stanie mi pomóc? Męczę się z tym już ok. 2 tygodni :)
Jak widać miałem jakąś strategię skryptu, ale jeżeli jest ona niepoprawna jak najbardziej możemy o niej zapomnieć :)
ID posta: 338444 Skopiuj do schowka
 
 
jbak 
forumowicz


Posty: 12
Wysłany: 24-01-2018, 16:16   

Może ktoś ma pomysł na jakąś zupełnie inną strategię? :)
ID posta: 338679 Skopiuj do schowka
 
 
kulasart
[Usunięty]

Wysłany: 24-01-2018, 17:23   

Skorzystaj z właściwości skryptu:
Kod:

function onOpen(){
 PropertiesService.getScriptProperties().setProperty('a', 0);
}


Kod:
function onEdit(){
  var a = PropertiesService.getScriptProperties().getProperty('a');
  a++;
  PropertiesService.getScriptProperties().setProperty('a', a);
}


Kod:
function sendMail(){
 if(PropertiesService.getScriptProperties().getProperty('a') > 0){
   GmailApp.sendEmail('xxx@gmail.com', 'aaa', 'sss ');
   PropertiesService.getScriptProperties().setProperty('a', 0);
  }
}
ID posta: 338691 Skopiuj do schowka
 
 
jbak 
forumowicz


Posty: 12
Wysłany: 25-01-2018, 19:15   

Dokładnie o to mi chodziło! Jestem kosmicznie wdzięczny!!!! DZIĘKUJĘ BARDZO :)))
ID posta: 338821 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe