Kontrola/oprava/úprava vložených hodnot v Google Sheets díky Apps Script

Google před asi 3 měsíci v tichosti odstranil jeden z posledních nedostatků Google Sheets App Script oproti VBA u MS Excelu a tím byla faktická nemožnost kontroly vkládaných dat skriptem (nicméně existuje alespoň dost mocná možnost Data/Ověření platnosti včetně možnosti vlastního vzorce).

Problém byl, že zde sice existovala událost onEdit(e), vracející novou hodnotu, problém byl, že zde chyběla ta původní hodnota a událost onEdit nastala až po provedení změny, tj. když se vám nová hodnota z nějakého důvodu nezdála, nemohli jste vrátit původní hodnotu (vynechám ošklivý hack, kdy jste si ukládali při otevření hodnotu všech buněk a porovnávali s nimi).

A to se právě změnilo a událost onEdit nyní obsahuje i původní hodnotu a teď někdy se to i dostalo do nápovědy.

Praktický příklad – řekněme, že nechceme povolit zadání větší hodnoty než 100, v opačném případě tam chceme vrátit původní hodnotu (není to tak úplně praktický příklad, protože zrovna tohle snadno vyřešíte tím Ověřením platnosti, ale pro ilustraci to postačí).

function onEdit(e){
 var range = e.range;
 if ( e.value > 100 ) range.setValue(e.oldValue); 
}

Nebo tedy trochu jiný příklad – řekněme, že po změně hodnoty chcete do poznámky k dané buňce napsat, kdy byla změněna a jaká byla původní hodnota.

function onEdit(e){
 var range = e.range;
 var note = range.getNote();
 note = (note) ? note+"\n" : note; 
 range.setNote(note+e.oldValue + ' (do ' + Utilities.formatDate(new Date(), "GMT+1", "d. M. yyyy HH:MM:ss") + ')');
}

Jen upozorním, že onEdit se spouští pro úpravu kterékoliv buňky, tj. pakliže budete chtít vliv omezit jen pro některé buňky, musíte testovat, zdali onen e.range je mezi nimi, což je mimo téma tohohle postu (prozradím, že bohužel Apps Script nemá obdobu MS VBA Application.Intesect, takže to je netriviální a musí se na to jít přes ověřování pozice e.range vůči definovaným okrajům).

1 komentář na „Kontrola/oprava/úprava vložených hodnot v Google Sheets díky Apps Script“

  1. I have found that Fein prices seem to be hard-set by them, but more affordable kits and assortments have popped up. I wo28#n&dlu17;t say that prices have come down, but I also haven’t been tracking this too closely.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *