Úno 092012
 
Tento příspěvek je 3. částí série Live tracking

Už trasujeme, a nejenom česky

Protože mám vazbu na Pavola, jednoho z vývojářů, za což mu také touto cestou děkuji, zeptal jsem se ho, zda se nebude něco na výstupu měnit a byl jsem ujištěn, že určitě ne. Rozhodl jsem se tedy dokonat dílo vlastními silami. Zdá se, že se to podařilo a skript funguje v českém prostředí i s případným českým datem.

Graf, případně profil si nastavte jako v minulém dílu, jen samotný skript si zaměňte za tento níže.  Jen si nezapomeňte doplnit jako obvykle svůj string do třetího řádku, pro připojení ke svému dokumentu, jak bylo vysvětleno v prvním dílu. Ve vlastnostech dokumentu ponechte lokalizaci na Česká Republika.

function doGet(e) {
  var app = UiApp.createApplication();
  var sp = SpreadsheetApp.openById("0Ag...........");
  // insert new row
  sp.insertRowBefore(1);
  if(e) {
    var d = new Date(Date(e.parameter.timestamp))
    sp.getRange("A1").setValue(parseFloat(e.parameter.lat));
    sp.getRange("B1").setValue(parseFloat(e.parameter.lon));
    sp.getRange("C1").setValue(Math.round((parseFloat(e.parameter.speed/1000*60*60))) + " km/h");
    sp.getRange("D1").setValue(parseFloat(e.parameter.altitude));
    sp.getRange("E1").setValue(parseFloat(e.parameter.hdop));
    sp.getRange("F1").setValue(d);
  }
  return app;
}

Skript jak vidíte není napsán substitucí a tak by měl fungovat pro jakoukoli lokalizaci. Je jen třeba ho pořádně odzkoušet. Z mých zatím sporých testů se zatím zdá, že funguje dobře. Tady je jeho testovací výstup.

49,005554    14,508303    87 km/h    452    5    9.2.2012 16:01:43
49,003353    14,504333    84 km/h    448    5    9.2.2012 16:01:27
49,001125    14,500414    81 km/h    445    5    9.2.2012 16:01:11
48,99937     14,497279    51 km/h    443    5    9.2.2012 16:00:55
48,99815     14,496169    34 km/h    441    5    9.2.2012 16:00:39
48,997757    14,494335    35 km/h    440    5    9.2.2012 16:00:23
48,996746    14,492489    38 km/h    439    5    9.2.2012 16:00:07
48,995644    14,490269    52 km/h    438    5    9.2.2012 15:59:51

 

Kdo by chtěl měřit rychlost na jedno desetinné místo, tak jsem přišel na jedno řešení pomocí toFixed metody, ale tam se zase plíživě vkradla desetinná tečka. Naštěstí to u tohoto údaje zrovna nevadí, jelikož se stejně konvertuje na text přidávanými jednotkami kilometry za hodinu. Kdo tedy chce, může řádek s buňkou „C1“ nahradit tímto, a získá jedno desetinné místo navíc

sp.getRange("C1").setValue((parseFloat(e.parameter.speed/1000*60*60).toFixed(1)) + " km/h");

 

Kdyby někdo místo krátkého data, chtěl dlouhý formát v jazyku podle lokalizace dokumentu, nahraďte řádek s buňkou „F1“ za tento. Datum pak bude obsahovat dlouhý název měsíce a bude vypadat takto: 9. únor 2012 17:58:41 CET

sp.getRange("F1").setValue(d.toLocaleString());

 

Finální stav s čárkami

 

Pokud se najde programátor, který mi kód učeše nebo najde nějakou chybu, budu pochopitelně jen rád.

 

  Jedna reakce na “Live tracking: trasujeme nejen česky”

  1. avatar

    No když je tam kontrola na parametr, tak bych vkládal řádek až po této kontrole.

    if(e) {
    var d = new Date(Date(e.parameter.timestamp))

    // insert new row
    sp.insertRowBefore(1);
    sp.getRange(„A1“).setValue(parseFloat(e.parameter.lat));
    sp.getRange(„B1“).setValue(parseFloat(e.parameter.lon));
    sp.getRange(„C1″).setValue(Math.round((parseFloat(e.parameter.speed/1000*60*60))) + “ km/h“);
    sp.getRange(„D1“).setValue(parseFloat(e.parameter.altitude));
    sp.getRange(„E1“).setValue(parseFloat(e.parameter.hdop));
    sp.getRange(„F1“).setValue(d);
    }

QR Code Business Card