Jak najít první prázdný řádek v Google Tabulce pomocí Apps Script? Postup je celkem snadný. Použitý kód je dostupný na githubu.
Nejdříve je nutné vybrat si, jakým způsobem (vzhledem k tabulce) chceme první prázdný řádek najít. Defacto máme na výběr ze dvou možností – buď najdeme první prázdný řádek ve sloupci nebo v celé tabulce.
Nalezení prázdného řádku ve sloupci
Pro daný problém prozatím neexistuje žádná funkce, je tedy třeba ji implementovat. Postup zde uvedený je pouze jedno z mnoha řešení daného problému, avšak je nadprůměrně rychlé pro tabulky s menší velikostí (maximálně několik tisíc řádků).
Jediné, co si musíme uvědomit je fakt, že tabulka je defacto dvourozměrné pole, které můžeme vyjádřit zápisem array[radek][sloupec]. S touto znalostí nám již stačí načíst data z prohledávaného sloupce (v naše příkladu sloupec A) tak, aby jedna buňka odpovídala jednomu záznamu v poli a následně pole projít a vyhledat první výskyt položky bez dat (tedy array[x][0] == “”).
Nejdříve je nutné vytvořit menu, pomocí nějž budeme spouštět vyhledávací funkci. to provedeme jednoduše pomocí metory createMenu (uvnitř funkce onOpen() ). První položka slouží pro spuštění vyhledávání ve sloupci, druhá v celé tabulce.
function onOpen() { SpreadsheetApp.getUi() .createMenu('Table tools') .addItem('Locate first empty row in column', 'firstEmptyRowInColumn') .addItem('Locate first empty row in table', 'firstEmptyRowInTable') .addToUi(); }
Nakonec vytvoříme samotnou vyhledávací funkci. Zjednodušeně – načteme aktivní tabulku, zvolený sloupec zapíšeme do pole, které nakonec projdeme a vyhledáváme položku bez dat. Nakonec zobrazíme číslo prvního prázdného řádku pomocí funkce alert (nesmíme zapomenout přičíst jedničku – první buňka tabulky [A1] je v poli vedena jako [0][0])
function firstEmptyRowInColumn() { var sheet = SpreadsheetApp.getActive(); var column = sheet.getRange('A:A'); var values = column.getValues(); var emptyRow = 0; while ( values[emptyRow][0] != "" ) { emptyRow++; } SpreadsheetApp.getUi().alert(emptyRow+1); }
Nalezení prázdného řádku v tabulce
Pokud je našim cílem najít první kompletně prázdný řádek (tedy řádek nemá žádný záznam v žádné buňce), můžeme již využít systémovou funkci.
function firstEmptyRowInTable() { var sheet = SpreadsheetApp.getActive(); var emptyRow = sheet.getLastRow(); SpreadsheetApp.getUi().alert(emptyRow+1); }
Výsledek
Po otevření tabulky s nainstalovaným skriptem dostaneme nové menu (viz obrázek níže). První funkce vrátí číslici “4”, druhá vrátí “9”.
Kompletní kód můžete najít zde nebo na githubu.
/* Funkce onOpen() zajisti spusteni vlozeneho kodu pri kazdem otevreni tabulky uzivatelem s opravnenim upravovat Vytvorime dve menu - sloupcove a celkove vyhledavani */ function onOpen() { SpreadsheetApp.getUi() .createMenu('Table tools') .addItem('Locate first empty row in column', 'firstEmptyRowInColumn') .addItem('Locate first empty row in table', 'firstEmptyRowInTable') .addToUi(); } // Vyhledavani prazdneho radku ve sloupci function firstEmptyRowInColumn() { var sheet = SpreadsheetApp.getActive(); var column = sheet.getRange('A:A'); var values = column.getValues(); var emptyRow = 0; while ( values[emptyRow][0] != "" ) { emptyRow++; } SpreadsheetApp.getUi().alert(emptyRow+1); } // Vyhledavani prazdneho radku v cele tabulce function firstEmptyRowInTable() { var sheet = SpreadsheetApp.getActive(); var emptyRow = sheet.getLastRow(); SpreadsheetApp.getUi().alert(emptyRow+1); }
Leave a Reply