Kapitola 3 Případová studie: úprava měsíční tabulky prodejů ・ MISE 11

Mise 11: Zapsat sloupec výsledků najednou (setValues)

📋 Seznam misí

Zadání

Do kategorie každého řádku s částkou aspoň 100 000 napište „Velká“. Nepište řádek po řádku, ale sloupec najednou přečtěte a najednou zapište.

Prodeje říjen - Tabulky Google
Prodeje říjen

Kvůli cvičení se tabulka před každým spuštěním vrátí do výchozího stavu (skutečná tabulka se nevrací. Změny skriptu jde někdy vrátit přes Ctrl+Z, ale ne všechny najednou).

Apps ScriptProjekt bez názvuNasadit ▾
function markLarge() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const amounts = sheet.getRange(2, 4, lastRow - 1, 1).getValues();
const labels = amounts.map((row) => [row[0] >= 100000 ? 'Velká' : '']);
sheet.getRange(2, 5, , 1).(labels);
}
Ctrl+S: uložit · Ctrl+R: spustit (editor) · F5: otevřít znovu

Kapitola 3 ・ MISE 11

Zapsat sloupec výsledků najednou (setValues)

Do kategorie každého řádku s částkou aspoň 100 000 napište „Velká“. Nepište řádek po řádku, ale sloupec najednou přečtěte a najednou zapište.

Teď
Cíl

Čtení kódu

sheet.getRange(2, 4, lastRow - 1, 1).getValues();
Přečte najednou lastRow - 1 řádků a 1 sloupec (sloupec částek) od řádku 2, sloupce 4.
amounts.map((row) => [row[0] >= 100000 ? 'Velká' : '']);
Vytvoří pole s „Velká“ pro řádky s aspoň 100 000 a prázdné pro ostatní. podmínka ? A : B je způsob, jak zapsat if na jeden řádek.
sheet.getRange(2, 5, labels.length, 1).setValues(labels);
Zapíše labels najednou do sloupce E, tolik řádků, kolik jich má labels.

Najednou přečíst přes getValues, řádek po řádku převést přes map a najednou zapsat přes setValues. Je to rychlejší než po buňkách; ani tisíce řádků vás nenechají čekat. Pokud mají oblast a pole různý počet řádků, objeví se chyba „The number of rows in the data does not match …“.

Jak začít s GAS a běžný kód popisujeme v článku.Co je GAS? Jak začít a běžný kód

Kód, který napíšete, běží v izolovaném prostoru uvnitř této stránky. Nedostane se mimo stránku ani na jiné weby.

* Jde o simulaci chování Tabulek Google a Apps Script, která se může v některých bodech lišit od originálu.

* Tabulky Google jsou ochranná známka společnosti Google LLC. Tento web není s Googlem nijak spojen.