# Skript

## Využití

Otázka typu *Skript* umožňuje vložit do dotazníku kód vlastního skriptu, který se zpracuje při zobrazení stránky a jeho výsledek se uloží do dat odpovědí, případně zobrazí do dotazníku.

## Vložení

V dotazníku klikněte na příkaz pro [přidání otázky](/tvorba-pruzkumu/editace-dotazniku/pridani-otazky-do-dotazniku.md) a ve formuláři vyberte typ otázky **Další** a upřesněte typ **Skript**.

![Výběr typu otázky Skript](/files/-MJSKMDyokB2OGPj113z)

Do pole *Jméno skriptu* zadejte pojmenování vkládaného skriptu.

Do pole *Skript* pak zadejte samotný skript / vzorec.

## Editace

Pro editaci položky klikněte v editoru dotazníku na modrou ikonu tužky<img src="/files/-MHl9-U14iyC2cQOBQsq" alt="" data-size="line">, která otevře editační formulář s dalšími možnostmi.

![Editace otázky v editoru dotazníku](/files/-MJSLGbgMrFa3LuY0OEv)

## Možnosti otázky

![Editace možností otázky](/files/-MJSLYewldXtcpPFXTA_)

V záložce *Možnosti* můžete otázku editovat.

Zakliknutím volby *Zobrazit výsledek skriptu* se výsledek výpočtu skriptu zobrazí respondentovi v dotazníku.

Výpočet skriptu je proveden jen jednou, a to při prvním zobrazení strany s touto otázkou. Výsledek výpočtu je uložen jako odpověď otázky a při příštím zobrazení strany, např. při návratu respondenta zpět v dotazníku, se skript již znovu nepočítá. Volba *Opakovat skript při opětovném zobrazení*  toto chování změní, skript je v tomto případě znovu přepočítán a nová hodnota přepíše hodnotu původní.&#x20;

### SPSS a jméno proměnné

V záložce *SPSS* můžete definovat jméno proměnné, pod kterým se data odpovědí na otázku uloží v datovém souboru .SAV při [exportu dat do SPSS](broken://pages/-MHoxS1dtU3AbRb14PPX).&#x20;

Jméno proměnné je také určeno pro použití ve funkcích skriptů. Pomocí této proměnné můžete načíst hodnotu odpovědi či odpověď programově uložit. Více v [Dotazníkové funkce](/tvorba-pruzkumu/typy-otazek/skript.md#dotaznikove-funkce).

![Nastavení jména proměnné u otázky](/files/-MJWAGd354u4_VGgfnrd)

## Syntax skriptu

Kód skriptu musí být zapsán vždy jako **vzorec** vracející hodnotu. Stejný postup se běžně používá v tabulkových kalkulátorech, jako je např. MS Excel nebo Open Office (bez úvodního znaménka =). Pokud potřebujete zapsat složitější vzorec, je nutné použít vnoření funkcí.

### Příklady vzorců

```
1 + 10
```

Vzorec vrací hodnotu 11.

```
GetData('Q1')
```

Vzorec vrací hodnotu odpovědi na otázku označenou jako Q1. Jméno proměnné Q1 se nastavuje v dané otázce pod záložkou SPSS.

```
IF(GetData('Q1') == 1, 'A', 'B')
```

Vnoření funkcí – pokud byla v dotazníku v otázce Q1 vybrána odpověď s hodnotou odpovědi 1, vrací skript text *A*, jinak vrací text *B*.&#x20;

{% hint style="info" %}
Více o hodnotách odpovědí najdete zde :point\_right: [Hromadná editace](/dalsi-vychytavky/hromadna-editace.md)
{% endhint %}

```
SetData('nps', GetUrlParameter('nps'))
```

Vzorec načte hodnotu URL parametru "nps" (https\:/[www.click4survey.cz/s4/1234/dotaznik](http://www.click4survey.cz/s4/1234/dotaznik)?*nps=10*) a uloží ji jako odpověď k otázce označené proměnnou "nps".

### Přehled operátorů

#### Logické

Tyto operátory mohou provést logické srovnání mezi jinými výrazy:

* or, ||
* and, &&

```
  true or false and true
```

Operátor **and** má vyšší prioritu než **or**, a tak ve výše uvedeném příkladu je výraz **false and true** vyhodnocen jako první.

#### Relační

* \=, ==, !=, <>
* <, <=, >, >=

```
  1 < 2
```

#### Aditivní

* +, -

```
  1 + 2 - 3
```

#### Multiplikativní

* \*, /, %

```
 1 * 2 % 3
```

#### Bitový

* & (bitové and), | (bitové or), ^(bitové xor), << (posun vlevo), >>(posun vpravo)

```
  2 >> 3
```

#### Unární

* !, not, -, \~ (bitwise not)

```
  not true
```

#### Primární

* (, )
* hodnoty

```
  2 * ( 3 + 2 )
```

### Datové typy

#### Celočíselné

Jsou reprezentovány pomocí čísel.

```
123456
```

Jsou vyhodnoceny jako **Int32**.

#### Čísla s plovoucí desetinnou čárkou

Pomocí tečky definujte desetinnou část.

```
123.456
.123
```

Jsou vyhodnoceny jako **Decimal**.

#### Vědecký zápis

Pomocí e můžete definovat mocninu deseti (10^).

```
1.22e1
1e2
1e+2
1e-2
.1e-2
1e10
```

Jsou vyhodnoceny jako **Double**.

#### Datum a čas

Musí být uzavřeno mezi křížky.

```
#31/01/2008#
```

Jsou vyhodnoceny jako DateTime.

#### Logické hodnoty

Logické hodnoty mohou být buď **true** nebo **false**.

```
true
```

#### Textové hodnoty

Jakýkoliv znak mezi jednoduchými uvozovkami ' ' jsou vyhodnoceny jako **String**.

```
'ahoj'
```

Speciální znaky můžete escapovat pomocí \\, ', \n, \r, \t.

#### Funkce

Funkce je tvořena názvem následovaným složenými závorkami, která obsahuje jako argumenty libovolnou hodnotu.

```
  Abs(1), nejakaFunkce(1, 'text')
```

### Interní funkce

<table data-full-width="true"><thead><tr><th width="206.33333333333337">Funkce</th><th width="525">Popis</th><th>Použití</th></tr></thead><tbody><tr><td>Abs</td><td>Vrátí absolutní hodnotu zadaného čísla.</td><td>Abs(-1)</td></tr><tr><td>Acos</td><td>Vrátí úhel, jehož kosinus je zadané číslo.</td><td>Acos(1)</td></tr><tr><td>Asin</td><td>Vrátí úhel, jehož sinus je zadané číslo.</td><td>Asin(0)</td></tr><tr><td>Atan</td><td>Vrátí úhel, jehož tangens je zadané číslo.</td><td>Atan(0)</td></tr><tr><td>Ceiling</td><td>Vrátí nejmenší celé číslo větší nebo rovné zadanému číslu.</td><td>Ceiling(1.5)</td></tr><tr><td>Cos</td><td>Vrátí kosinus zadaného úhlu.</td><td>Cos(0)</td></tr><tr><td>Exp</td><td>Vrátí e umocněné na hodnotu argumentu.</td><td>Exp(0)</td></tr><tr><td>Floor</td><td>Vrátí největší celé číslo menší nebo rovné zadanému číslu.</td><td>Floor(1.5)</td></tr><tr><td>IEEERemainder</td><td>Vrátí zbytek vyplývající z dělení zadaného čísla na jiné zadané číslo.</td><td>IEEERemainder(3, 2)</td></tr><tr><td>Log</td><td>Vrátí logaritmus zadaného čísla.</td><td>Log(1, 10)</td></tr><tr><td>Log10</td><td>Vrátí logaritmus zadaného čísla o základu 10.</td><td>Log10(1)</td></tr><tr><td>Max</td><td>Vrátí větší ze dvou zadaných čísel.</td><td>Max(1, 2)</td></tr><tr><td>Min</td><td>Vrátí menší ze dvou čísel.</td><td>Min(1, 2)</td></tr><tr><td>Pow</td><td>Vrátí mocninu specifikovaného čísla.</td><td>Pow(3, 2)</td></tr><tr><td>Round</td><td>Zaokrouhlí hodnotu na nejbližší celé číslo nebo zadaný počet desetinných míst.</td><td>Round(3.222, 2)</td></tr><tr><td>Sign</td><td>Vrátí hodnotu označující znaménko čísla.</td><td>Sign(-10)</td></tr><tr><td>Sin</td><td>Vrátí sinus zadaného úhlu.</td><td>Sin(0)</td></tr><tr><td>Sqrt</td><td>Vrátí druhou odmocninu zadaného čísla.</td><td>Sqrt(4)</td></tr><tr><td>Tan</td><td>Vrátí tangens zadaného úhlu.</td><td>Tan(0)</td></tr><tr><td>Truncate</td><td>Vypočítá integrální část čísla.</td><td>Truncate(1.7)</td></tr><tr><td>in</td><td>Vrátí, zda je prvek v sadě hodnot.</td><td>in(1 + 1, 1, 2, 3)</td></tr><tr><td>if</td><td>Vrátí hodnotu na základě podmínky.</td><td>if(3 % 2 = 1, 'hodnota je true', 'hodnota je false')</td></tr></tbody></table>

### Dotazníkové funkce

<table data-full-width="true"><thead><tr><th width="296.3333333333333">Funkce</th><th width="406">Popis</th><th>Použití</th></tr></thead><tbody><tr><td>GetUrlParameter('variable')</td><td>Vrátí hodnotu parametru <em>variable</em> z URL adresy dotazníku.</td><td>GetUrlParameter('Q1')</td></tr><tr><td>GetUserField(n)</td><td>Vrátí hodnotu n-tého uživatelského pole.</td><td>GetUserField(1)</td></tr><tr><td>GetContactEmail</td><td>Vrátí e-mailovou adresu kontaktu z e-mailové kampaně.</td><td>GetContactEmail()</td></tr><tr><td>GetContactPhone</td><td>Vrátí telefon kontaktu e-mailové kampaně.</td><td>GetContactPhone()</td></tr><tr><td>GetContactFirstName</td><td>Vrátí jméno kontaktu e-mailové kampaně.</td><td>GetContactFirstName()</td></tr><tr><td>GetContactLastName</td><td>Vrátí příjmení kontaktu e-mailové kampaně.</td><td>GetContactLastName()</td></tr><tr><td>GetContactSalutation</td><td>Vrátí oslovení kontaktu e-mailové kampaně.</td><td>GetContactSalutation()</td></tr><tr><td>GetContactCompany</td><td>Vrátí firmu kontaktu e-mailové kampaně.</td><td>GetContactCompany()</td></tr><tr><td>GetContactJob</td><td>Vrátí pracovní zařazení kontaktu e-mailové kampaně.</td><td>GetContactJob()</td></tr><tr><td>GetContactMobile</td><td>Vrátí mobil kontaktu e-mailové kampaně.</td><td>GetContactMobile()</td></tr><tr><td>GetRandomNumber(min, max)</td><td>Vrátí náhodné číslo v rozsahu hodnot <em>min</em> a <em>max</em>.</td><td>GetRandomNumber(1, 10)</td></tr><tr><td>GetData('variable')</td><td>Vrátí hodnotu odpovědi na otázku specifikovanou proměnnou <em>variable</em>. Funkce vrací hodnotu vždy jako text.</td><td>GetData('Q1')</td></tr><tr><td>GetData('variable', rowNum)</td><td>Vrátí hodnotu odpovědi z baterie specifikované proměnnou <em>variable</em>, ve sloupci s jednou možnou odpovědí, na řádku <em>rowNum</em>. Funkce vrací hodnotu vždy jako text.</td><td>GetData('M1', 1)</td></tr><tr><td>GetData('variable', colNum, rowNum)</td><td>Vrátí hodnotu odpovědi z baterie specifikované proměnnou <em>variable</em>, ve sloupci <em>colNum</em> s jednou možnou odpovědí, na řádku <em>rowNum</em>. Funkce vrací hodnotu vždy jako text.</td><td>GetData('M1', 1, 1)</td></tr><tr><td>GetData('variable', colNum, rowNum, answerVal)</td><td>Vrátí hodnotu odpovědi z baterie specifikované proměnnou <em>variable</em>, ve sloupci <em>colNum</em> s více možnými odpověďmi, u odpovědi s hodnotou <em>answerVal</em>, na řádku <em>rowNum</em>. Funkce vrací hodnotu vždy jako text.</td><td>GetData('M1', 1, 1, 3)</td></tr><tr><td>GetRankData('variable', n)</td><td>Vrátí pořadí, na jakém byla seřazena n-tá položka v otázce na seřazení položek. Dále také z otázky <em>Výběr z možností - více odpovědí</em> vrátí hodnotu odpovědi, pokud byla zaškrtnuta.</td><td>GetRankData('R1', 1)</td></tr><tr><td>GetFirstRank('variable')</td><td>Vrátí hodnotu první vybrané možnosti v otázce na řazení možností.</td><td>GetFirstRank('R1')</td></tr><tr><td>GetFirstRank('variable',' text')</td><td>Vrátí text první vybrané možnosti v otázce na řadění možností.</td><td>GetFirstRank('R1', 'text')</td></tr><tr><td>GetOptionText('variable', answerVal)</td><td>Vrátí text odpovědi otázky specifikované proměnnou <em>variable</em> a specifickou hodnotou odpovědi <em>answerVal</em>.</td><td>GetOptionText('Q1', 2)</td></tr><tr><td>GetValue('variable')</td><td>Vrátí hodnotu odpovědi otázky specifikované proměnnou <em>variable</em> v přesném datovém typu (s číselnými odpověďmi lze ve skriptech provádět matematické operace), na rozdíl od funkce GetData, která vždy vrací datový typ text.</td><td>GetValue('Q3')</td></tr><tr><td>GetOtherValue('variable', answerVal)</td><td>Vrátí textovou odpověď "Jiná" z otázky specifikované proměnnou <em>variable</em> a specifickou hodnotou odpovědi <em>answerVal</em>.</td><td>GetOtherValue('Q1', 2)</td></tr><tr><td>GetRowOtherValue('variable', rowNum)</td><td>Vrátí textovou odpověď z řádku "Jiná" z baterie specifikované proměnnou <em>variable</em> a řádku číslo <em>rowNum</em>.</td><td>GetRowOtherValue('X1', 10)</td></tr><tr><td>GetAnswersCount('variable')</td><td>Vrátí počet označených odpovědí u otázky typu <em>Výběr z možností - více odpovědí</em> specifikované proměnnou <em>variable</em>.</td><td>GetAnswersCount('Q1')</td></tr><tr><td>IsQuotaFull(quotaid)</td><td>Vrátí, zdali je kvóta specifikovaná pomocí <em>quotaid</em> naplněna.</td><td>IsQuotaFull(1234)</td></tr><tr><td>GetQuotaFullness(quotaid)</td><td>Vrátí počet kompletních interview ve kvótě specifikovaní pomocí <em>quotaid</em>.</td><td>GetQuotaFullness(1234)</td></tr><tr><td>Choose(index, value1, value2, value3, valueN)</td><td>Vrátí hodnoty <em>value1, value2,</em> ... v závislosti na hodnotě parametru <em>index</em>. Pokud je <em>index=1</em>, vrátí hodnotu <em>value1</em>, pro <em>index=2</em> vrátí <em>value2</em>, atd.</td><td>Choose(GetData('Q1'), 10, 20, 30, 1 + 1)</td></tr><tr><td>SetData('variable', value)</td><td>Nastaví otázce specifikované proměnnou <em>variable</em> odpověď hodnoty <em>value</em>. Tuto hodnotu zároveň vrátí.</td><td>SetData('Q1', 1)</td></tr><tr><td>Len(value)</td><td>Vrátí počet znaků, které obsahuje textová hodnota <em>value</em>.</td><td>Len(GetData('note'))</td></tr><tr><td>Match(value, '^RegularExpression$')</td><td>Vrátí, zdali hodnota <em>value</em> odpovídá regulárnímu výrazu <em>RegularExpression</em>. Regulární výraz začíná znakem ^ a končí znakem $.</td><td>Match(GetData('id'), '^\d{6}$')</td></tr><tr><td>CompleteInterview()</td><td>Označí aktuální rozhovor za ukončený</td><td>CompleteInterview()</td></tr><tr><td>DisqualifyInterview()</td><td>Označí aktuální rozhovor za diskvalifikovaný, respondent bude vyřazen z dotazování.</td><td>DisqualifyInterview()</td></tr><tr><td>GetCurrentSessionId()</td><td>Vrátí unikátní číslo aktuálního rozhovoru - id vyplňovaného dotazníku</td><td>GetCurrentSessionId()</td></tr><tr><td>InRange(value, rangeStart, rangeEnd, resultIfInRange)</td><td>Testuje hodnotu <em>value</em>, zdali je v rozsahu od <em>rangeStart</em> do <em>rangeEnd</em>. Pokud ano, vrací hodnotu <em>resultIfInRange</em>. Pokud ne, vrací hodnotu NULL.</td><td>InRange(GetValue('q1'), 10, 20, 1)</td></tr><tr><td>FirstNotNull(value1, value2, value3)</td><td>Vrátí první hodnotu ze seznamu parametrů, která není rovna hodnotě NULL.</td><td>FirstNotNull(InRange(GetValue('q1'), 10, 20, 1), InRange(GetValue('q1'), 20, 30, 2), InRange(GetValue('q1'), 30, 40, 3))</td></tr><tr><td>In(value, value1, value2, valuex)</td><td>Porovnává první hodnotu <em>value</em> s ostatními hodnotami funkce. Pokud je hodnota ve výčtu nalezena, vrací true, jinak false. </td><td>In(GetValue('q1'), 1, 2, 3)</td></tr><tr><td>IsMobile()</td><td>Pokud je dotazník vyplňovám na mobilu, vrací true, jinak false.</td><td>IsMobile()</td></tr></tbody></table>

## Export dat odpovědí

Tento typ otázky je možné exportovat pro další zpracování do formátu [CSV](/analyza-odpovedi/export-dat-pruzkumu.md), [XLSX ](broken://pages/-MI-y-n17woxyjCJGfKM)nebo [SAV](broken://pages/-MHoxS1dtU3AbRb14PPX). Otázka je exportována jako jeden datový sloupec.

![Export dat otázky do Excelu](/files/-MJW0fRMmIud7oEK9wSe)

{% hint style="success" %}
Tento typ otázky je dostupný v účtu PROFESSIONAL a vyšším 👉 [Přehled účtů](https://www.click4survey.cz/ceny/)
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://napoveda.click4survey.cz/tvorba-pruzkumu/typy-otazek/skript.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
