> For the complete documentation index, see [llms.txt](https://help.novacuraflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.novacuraflow.com/6.11/development/flow-studio/flowscript/scripting-examples.md).

# Script examples

## Example: Append new records to a table

{% hint style="info" %}
\#FlowScript #[Join](/6.11/development/flow-studio/flowscript/table/table-functions.md#the-join-function) #[If statement](/6.11/development/flow-studio/flowscript/statements.md#conditional-statement) #[For loop](/6.11/development/flow-studio/flowscript/statements.md#loops) #[With](/6.11/development/flow-studio/flowscript/table.md#update-row-the-with-keyword) #[Table concatenation](/6.11/development/flow-studio/flowscript/table.md#insert-row-the-table-concatenation-and-operator) #[Create table](/6.11/development/flow-studio/flowscript/table.md#create-table-the-empty-table-statement)
{% endhint %}

This scrip creates a new table and fills it with data from an already existing table, where one column will be updated with new data.&#x20;

#### **Input table:**

<div align="left"><img src="/files/-LvKsar0BY_IPTcDV2eg" alt=""></div>

*DS\_periodDates*

| date       | dayStatus              |
| ---------- | ---------------------- |
| 2019-12-01 | Confirmed              |
| 2019-12-02 | Reported               |
| 2019-12-03 | 3 hours left to report |
| 2019-12-04 | 8 hours left to report |

*DS\_favorites*

| customerId | customerName | project | accountDate |
| ---------- | ------------ | ------- | ----------- |
| 3245       | abc          | 4565    | 2019-12-01  |
| 2456       | adc          | 5465    | 2019-12-01  |
| 5974       | acb          | 4564    | 2019-12-01  |

#### **Script:**

```fsharp
let generatedFavorites = table(customerId, customerName, project, accountDate, objversion, objid);

for recDate in DS_periodDates do

    if recDate.date < now() and (recDate.dayStatus like '%hours left to report' or recDate.dayStatus = 'Reported') then

        for recFavorite in DS_favorites do 

            let addedFavs = recFavorite with [accountDate: recDate.date];

            set generatedFavorites = generatedFavorites & addedFavs;

        done

    end

done

return generatedFavorites; 
```

**Description:**

1. A new table is created: *generatedFavorites* (row 1 in script below)
2. The script will loop for every row in table *DS\_periodDates* (3) where the date is in the future and the day status is like '%hours left to report' or 'Reported' (5)
   1. The script will loop for every row in table *DS\_favorites* (7) where the account date in *DS\_favorites* will be updated with the date from *DS\_periodDates* (9)
   2. The script adds the result from each loop iteration to *generatedFavorites* by concatenating the row with table *addedFavs* (11)
3. The script returns *generatedFavorites* (19)

#### **Output table:**

<div align="left"><img src="/files/-LvLEbqq8vxwEa7GY91B" alt=""></div>

*generatedFavorites:*

| customerId | customerName | project | accountDate |
| ---------- | ------------ | ------- | ----------- |
| 3245       | abc          | 4565    | 2019-12-02  |
| 2456       | adc          | 5465    | 2019-12-02  |
| 5974       | acb          | 4564    | 2019-12-02  |
| 3245       | abc          | 4565    | 2019-12-03  |
| 2456       | adc          | 5465    | 2019-12-03  |
| 5974       | acb          | 4564    | 2019-12-03  |
| 3245       | abc          | 4565    | 2019-12-04  |
| 2456       | adc          | 5465    | 2019-12-04  |
| 5974       | acb          | 4564    | 2019-12-04  |

## Example: Join in to a record

{% hint style="info" %}
\#FlowScript #[Join](/6.11/development/flow-studio/flowscript/table/table-functions.md#the-join-function) #[If statment](/6.11/development/flow-studio/flowscript/statements.md#conditional-statement)
{% endhint %}

This script joins values and assign the values to new variables.

#### Input variables:

<div align="left"><img src="/files/-LvG_Gya6SdDf9L0St_A" alt=""></div>

#### Script:

```fsharp
let criticalBugsNoTeamJoinedKey = '0';
let criticalBugsNoProgressJoinedKey = '0';
let criticalBugsNotStaredJoinedKey = '0'; 

if count(criticalBugsNoTeam) > 0 then

set criticalBugsNoTeamJoinedKey = Join(criticalBugsNoTeam.key,'%27%2C%27');

end

if count(criticalBugs) > 0 then

set criticalBugsNoProgressJoinedKey = join(criticalBugs.key,'%27%2C%27');

end 

if count(criticalBugsNotStarted) > 0 then

set criticalBugsNotStaredJoinedKey = join(criticalBugsNotStarted.key,'%27%2C%27');

end 

let joined= [criticalBugsNoTeamJoinedKey: criticalBugsNoTeamJoinedKey, criticalBugsNoProgressJoinedKey: criticalBugsNoProgressJoinedKey, criticalBugsNotStaredJoinedKey: criticalBugsNotStaredJoinedKey]; 

return joined;
```

#### Output variable:

<div align="left"><img src="/files/-LvG_nRO-EpN1wQuJWfS" alt=""></div>

## Example: Convert a complex table into a simple table

{% hint style="info" %}
\#FlowScript #[Join](/6.11/development/flow-studio/flowscript/table/table-functions.md#the-join-function) #[Loop](/6.11/development/flow-studio/flowscript/statements.md#loops) #[For loop](/6.11/development/flow-studio/flowscript/statements.md#loops) #[Create table](/6.11/development/flow-studio/flowscript/table.md#create-table-the-empty-table-statement)
{% endhint %}

This script will create a simple table where for example join is used to join all components together in to one string so all values can be put in to one column.&#x20;

#### Input table:

The input table *blockerBugsFiltered* is a complex table with differnt levels of tables, records and simple values in the table.

<div align="left"><img src="/files/-LvGS58o6NcorI1MNZ_J" alt=""></div>

#### **Script:**

```fsharp
let blockerBugs = table (key, summary, description, priority, components, assignee, created);

for rec_ in blockerBugsFiltered do 

let joinComponents = join(rec_.fields.components.name, ', ');

set blockerBugs = blockerBugs & [key: rec_.key, summary: rec_.fields.summary, description: rec_.fields.description, priority: rec_.fields.priority.name,
components: joinComponents, assignee: rec_.fields.assignee.displayName, created: left(rec_.fields.created,10)];

done

return blockerBugs; 

```

**Description:**

1. A new table is created: *bockerBugs* (row 1 in script below).
2. The script will loop for every row in table *blockerBugsFiltered* (3).
3. Join the values in the *components* table (5).
4. Append new records to table *blockerBugs* (7).
5. The script returns the table *blockerBugs* (12).

#### Output table:

The output of this script will be a simple table including only simple values.

<div align="left"><img src="/files/-LvGTbSo48Sp1qj3be5N" alt=""></div>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://help.novacuraflow.com/6.11/development/flow-studio/flowscript/scripting-examples.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
