Apps Script: jak najít první prázdný řádek tabulky

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”.

spreadsheet-first-empty-row

 

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);
}

 

Podělte se o informaceShare on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Leave a Reply

Your email address will not be published. Required fields are marked *

*