Filtr krátkých geocaching logů

Pokud hrajete geocaching a založili jste několik kešek, pravděpodobně jste již někdy dostali log, který vás tak úplně nezajímal. Myslím tím krátké vzkazy jako: „TFTC“, „Díky za cache“, „Díky“, případně jen smajlík. Když nějakou dobu logy nečtete, máte najednou plnou schránku a stojíte před rozhodnutím, jestli logy číst, mazat nebo nějak roztřídit. Vytvořil jsem krátký script, který logům kratším než 40 znaků přiřadil štítek. Mohl jsem tak roztřídit co číst a co vyhodit. Pokud používáte Gmail, můžete automatický filtr také vyzkoušet.

Skript nerozlišuje odesilatele, protože mám speciální gmail adresu jen pro geocaching. Pokud vám do gmailu chodí i další zprávy, může se stát, že budou označeny tímto štítkem

Postup

  1. Spusťte Google Disk a vytvořte nový soubor Google Apps Script. Soubor jsem si pojmenoval „gmail filtr“.
Vytvořte Google Apps Script
  1. Do vytvořeného souboru překopírujte následující kód. Nebo si kód zkopírujte z repozitáře na GitHub.
// Jméno štítku, kterým budou označeny nevyřešené emaily
var SHORT_LOG_LABEL_NAME = 'TFTC'; 

// Funkce vytvoří nový štítek, pokud ještě neexistuje
function getShortLogLabel() {
  var label = GmailApp.getUserLabelByName(SHORT_LOG_LABEL_NAME);
  
  if (label == null)
     label = GmailApp.createLabel(SHORT_LOG_LABEL_NAME);
  
  return label;
}

// Odebere štítek všem e-mailům 
function removeShortLogLabels() {
  var label = getShortLogLabel();
  var threads = GmailApp.search('label:' + SHORT_LOG_LABEL_NAME);
  
  for (var i = 0; i < threads.length; i++)
      label.removeFromThread(threads[i]);
}

// Přidá štítek k nejnovějším 200 e-mailům, které vyhovují regulárnímu výrazu 
function addShortLogLabel() {
  var label = getShortLogLabel();
  
  // čísla 0, 200 určují začátek a konec vyhledávání. Maximum je 500
  var threads = GmailApp.getInboxThreads(0, 200);

  // Projde všechny e-maily v rozsahu
  for (var i = 0; i < threads.length; i++) {
    var tmp,
      message = threads[i].getMessages()[0],
      content = message.getPlainBody();

    // Zkontroluje, jestli obsah e-mailu odpovídá zadanému pravidlu
    if (content) {
      
      // Regulární výraz - číslice 40 určuje délku logu, kratší logy než 40 znaků jsou označeny štítkem
      tmp = content.match(/(:\*)\s{1,}.{1,40}\s{1,}(This)/);

      Logger.log(tmp);
      
      // Pokud odpovídá pravidlu, přidá štítek
      if (tmp)
        label.addToThread(threads[i]);
      }  // Konec podmínky
    }  // Konec cyklu
  }

Kód obsahuje následující funkce:

  • getShortLogLabel – vytvoří v Gmailu štítek pojmenovaný „TFTC“, tímto štítkem budou označovány všechny krátké e-maily.
  • removeShortLogLabels – odebere všechny TFTC štítky. Používal jsem při testování podmínek.
  • addShortLogLabel – kontroluje e-maily a přidává TFTC štítek. Tato funkce bude spouštěna automaticky.
  1. Klikněte na „Spouštěče aktuálního projektu“ (tlačítko s hodinami) a nastavte spouštění funkce addShortLogLabel. 
Nastavení automatického spouštění funkce
  1. Google vás upozorní, že zadaný script není autorizovaný a že mu musíte povolit přístup do aplikace Gmail.
  1. Klikněte na rozšířené možnosti a přejděte na nastavení nově vytvořené aplikace.
Klikněte na rozšířené možnosti
  1. Zkontrolujte, pro kterou aplikaci povolujte jaká oprávnění. A klikněte na povolit.
  1. Po té, co vytvořenému scriptu přidělíte oprávnění přístupu k vašemu Gmail účtu, spusťte funkci getShortLogLabel, která vytvoří štítek „TFTC“, případně si na druhém řádku kódu pojmenujte štítek tak, jak vám vyhovuje.
Spuštění funkce pro vytvoření štítku
  1. Přepněte se do Gmailu a v nastavení štítku zvolte barvu štítku, jaká vám vyhovuje
Změna barvy štítku v Gmailu
  1. Pokud chcete funkčnost celého scriptu otestovat hned, v editoru scriptu spusťte ručně funkci addShortLogLabel.
  2. Pokud budete v budoucnu chtít tomuto scriptu odebrat přístup k vašemu Gmail účtu, můžete tak učinit v nastavení Google účtu. Doporučuji zde rovnou zkontrolovat, kterým aplikacím jste již přístup udělili. Nepoužívaným aplikacím přístup odeberte. Stejně tak zkontrolujte, na které web se přihlašujete pomocí google účtu.
Aplikace s přístupem k Google účtu