# Dateien und Export

Dateien helfen dir, Daten in Ninox hinein- und aus Ninox herauszubringen. Du kannst Anhänge importieren, Text- oder Tabellen-Exporte erstellen, Dateien bündeln, Links erzeugen und steuern, wer auf geteilte Dateien und Ansichten zugreifen kann. Dieses Kapitel zeigt dir die wichtigsten Dateifunktionen für typische Automatisierungs- und Reporting-Aufgaben.

In diesem Kapitel lernst du, wie du:

* Datei-, Datensatz- und Ansichtslinks erzeugst.
* Dateien und gespeicherte Ansichten teilst und die Freigabe wieder aufhebst.
* Dateiinhalte als Base64 für APIs oder eingebettete Ausgaben lädst.

<table><thead><tr><th width="214.921875">Funktion (A-Z)</th><th>Aufgabe</th></tr></thead><tbody><tr><td><code>file()</code></td><td>Gibt eine einzelne Dateireferenz zurück</td></tr><tr><td><code>files()</code></td><td>Gibt mehrere Dateireferenzen zurück</td></tr><tr><td><code>fileUrl()</code></td><td>Gibt einen Link zu einer Datei zurück</td></tr><tr><td><code>loadFileAsBase64()</code></td><td>Gibt Dateiinhalte als Base64-String zurück</td></tr><tr><td><code>loadFileAsBase64URL()</code></td><td>Gibt Dateiinhalte als Base64-Data-URL zurück</td></tr><tr><td><code>shareFile()</code></td><td>Erstellt einen Freigabelink für eine Datei</td></tr><tr><td><code>shareView()</code></td><td>Erstellt einen Freigabelink für eine Ansicht</td></tr><tr><td><code>unshareAllViews()</code></td><td>Entfernt die Freigabe für alle Ansichten einer Tabelle</td></tr><tr><td><code>unshareFile()</code></td><td>Beendet die Freigabe einer Datei</td></tr><tr><td><code>unshareView()</code></td><td>Beendet die Freigabe einer gespeicherten Ansicht</td></tr></tbody></table>

## Dateien sammeln

Nutze diese Funktionen, wenn du in einem Skript mit einem oder mehreren Dateiobjekten arbeiten willst.

### Mit `file()` und `files()` ein oder mehrere Dateiobjekte zurückgeben

Nutze `file()`, wenn du eine Dateireferenz brauchst. Nutze `files()`, wenn du die vollständige Liste brauchst.

Nutze sie, wenn du:

* angehängte Dateien aus einem Datensatz lesen willst.
* Dateiobjekte an andere Dateifunktionen übergeben willst.
* je nach Feldinhalt mit einer einzelnen Datei oder allen verfügbaren Dateien arbeiten willst.
* einen bestimmten Anhang über den Dateinamen aus einem Datensatz auswählen willst.

`file(any)`\
`file(nid, string)`\
`files(any)`\
`files(nid)`

* `any`: das Dateifeld, der Datensatz oder die unterstützte Quelle, die du lesen willst
* `nid`: der Datensatz, der den Dateianhang enthält
* `string`: der exakte Dateiname des Anhangs, den du zurückgeben willst

`files()` gibt ein Array von Dateiobjekten zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
files(this)
```

Gibt alle Anhänge des aktuellen Datensatzes als Array zurück.

```ninox
count(files(this))
```

Gibt die Anzahl der Anhänge des aktuellen Datensatzes zurück.

```ninox
file(this, "My wanted document.pdf")
```

Gibt den Dateianhang aus dem aktuellen Datensatz mit dem Namen "My wanted document.pdf" zurück.

Tipps:

* Nutze `files()`, wenn Nutzer mehrere Dateien anhängen können und du alle brauchst.
* Nutze `file()` mit Datensatz-ID und exaktem Dateinamen, wenn ein Datensatz mehrere Anhänge hat und du eine bestimmte Datei brauchst.
* Achte auf den exakten Dateinamen, wenn du die Form mit Datensatz und Namen nutzt.

## Links und URLs prüfen

Nutze diese Funktionen, wenn du eine Datei prüfen willst, bevor du sie verwendest, oder wenn du einen Link zu einer Datei oder einem Datensatz erzeugen willst.

### Mit `fileUrl()` einen Link erzeugen

Nutze `fileUrl()`, um eine URL für eine Datei zurückzugeben.

Nutze es, wenn du:

* einen Download-Link anzeigen oder senden willst.
* nach einem Export einen Dateilink zurückgeben willst.
* eine Datei-URL an einen anderen Prozess übergeben willst.
* auf einen bestimmten Anhang in einem Datensatz verlinken willst.

`fileUrl(file)`\
`fileUrl(nid, string)`

* `file`: das Dateiobjekt, für das du einen Link willst
* `nid`: der Datensatz, der den Dateianhang enthält
* `string`: der exakte Dateiname des Anhangs, auf den du verlinken willst

`fileUrl()` gibt einen Link zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
let f := file(this, "My wanted document.pdf");
fileUrl(f)
```

Gibt einen Link zur Datei zurück.

```ninox
let fileName := extractx(text(Image), "[^/]+$");
fileUrl(this, fileName)
```

Extrahiert den Dateinamen aus dem Feld `File` und gibt einen Link zu genau dieser Datei zurück.

Tipps:

* Nutze die Form von `fileUrl()` mit Datensatz und Namen, wenn ein Datensatz mehrere Anhänge hat und du einen genauen Link brauchst.
* `fileUrl()` ist für die Nutzung auf dem Client gedacht.
* Nutze `fileUrl()` nicht in Triggern oder in `do as server`-, `do as transaction`- oder `do as deferred`-Blöcken.
* Der erzeugte Link nutzt Informationen des aktuell angemeldeten Nutzers und ist deshalb serverseitig nicht verfügbar.

## Dateien teilen und Freigaben aufheben

### Mit `shareFile()` und `unshareFile()` eine Datei teilen oder die Freigabe aufheben

Nutze `shareFile()`, um einen Freigabelink für eine Datei zu erstellen. Nutze `unshareFile()`, um die Freigabe zu beenden.

Nutze sie, wenn du:

* einen teilbaren Link für einen Export oder Anhang erzeugen willst.
* eine Datei-Freigabe-URL in einem Text- oder URL-Feld speichern willst.
* einen Dateilink widerrufen willst, der nicht mehr verfügbar sein soll.

`shareFile(file)`\
`shareFile(nid, string)`\
`unshareFile(file)`

* `file`: das Dateiobjekt, das du teilen oder dessen Freigabe du beenden willst
* `nid`: der Datensatz, der die Datei enthält, die du teilen willst
* `string`: der exakte Dateiname, den du teilen willst, wenn du die Datensatz-Form nutzt

`shareFile()` gibt einen Link zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
let x := createXLSX("orders.xlsx", select Orders);
shareFile(x)
```

Gibt einen Freigabelink für die exportierte Datei zurück.

```ninox
shareFile(this, "NinoxLogo.jpg")
```

Gibt einen Freigabelink für die Datei `NinoxLogo.jpg` im aktuellen Datensatz zurück.

```ninox
let x := createXLSX("orders.xlsx", select orders);
unshareFile(x)
```

Beendet die Freigabe der Datei.

Tipps:

* `shareFile()` erstellt einen Freigabelink, keine nutzerspezifische Dateiberechtigung.
* Speichere den zurückgegebenen Link in einem URL- oder Textfeld, wenn du ihn später wiederverwenden willst.
* `shareFile()` funktioniert nicht in einem Formelfeld, weil die Funktion Daten ändert.
* Freigabelinks sind an die Datenbank gebunden, in der sie erstellt wurden.
* Wenn diese ursprüngliche Datenbank nach einer Wiederherstellung oder Migration gelöscht wird, funktionieren alte Freigabelinks nicht mehr.
* Teile nur die finale Version eines Exports.

## Gespeicherte Ansichten teilen und Freigaben aufheben

Nutze diese Funktionen, wenn du den Zugriff auf eine gespeicherte Ansicht freigeben oder wieder entfernen willst.

### Freigegebene Ansichten mit `shareView()`, `unshareView()` und `unshareAllViews()` verwalten

Nutze `shareView()`, um eine gespeicherte Ansicht zu teilen. Nutze `unshareView()`, um die Freigabe einer Ansicht zu beenden. Nutze `unshareAllViews()`, um die Freigabe aller geteilten Ansichten auf einmal zu entfernen.

Nutze sie, wenn du:

* eine Reporting-Ansicht veröffentlichen willst.
* den Zugriff auf eine veraltete freigegebene Ansicht beenden willst.
* Freigaben für Ansichten gesammelt zurücksetzen willst.

`shareView(string)`\
`shareView(string, string)`\
`shareView(string, JSON)`\
`shareView(string, string, JSON)`\
`unshareView(string, string)`\
`unshareAllViews(string)`

* `string` (erstes Argument von `shareView`): der Tabellenname
* `string` (zweites Argument der Form mit zwei Strings von `shareView`): der Name der Ansicht
* `JSON`: optionale Freigabeeinstellungen, zum Beispiel `{ contentType: "pdf" }`
* `string` (erstes Argument von `unshareView`): der Tabellenname
* `string` (zweites Argument von `unshareView`): der Name der gespeicherten Ansicht
* `string` (Argument von `unshareAllViews`): der Tabellenname

#### Schauen wir uns einige Beispiele an:

```ninox
shareView("Events")
```

Gibt einen Freigabelink für die Standardansicht der Tabelle `Events` zurück.

```ninox
shareView("Events", "New York")
```

Gibt einen Freigabelink für die Ansicht `New York` der Tabelle `Events` zurück.

```ninox
shareView("Events", "San Francisco", {
    contentType: "pdf"
})
```

Gibt einen Freigabelink für die Ansicht `San Francisco` der Tabelle `Events` als PDF zurück.

```ninox
unshareView("Invoices", "Current month")
```

Beendet die Freigabe der Ansicht `Current month` der Tabelle `Invoices`.

```ninox
unshareAllViews("Invoices")
```

Beendet die Freigabe aller Ansichten der Tabelle `Invoices`.

Tipps:

* Wenn du keine Ansicht angibst, nutzt Ninox die Standardansicht.
* `shareView()` gibt einen Link zurück, den du in einem URL- oder Textfeld speichern kannst.
* `shareView()` unterstützt Formate wie `pdf`, `html`, `csv`, `xlsx` und `json`.
* `shareView()` funktioniert nicht in einem Formelfeld, weil die Funktion Daten ändert.
* `unshareView()` funktioniert nicht in einem Formelfeld, weil die Funktion Daten ändert.
* `unshareAllViews()` funktioniert nicht in einem Formelfeld, weil die Funktion Daten ändert.
* Nutze stabile Tabellen- und Ansichtsnamen in Skripten.
* Prüfe freigegebene Ansichten regelmäßig, wenn Datenzugriff wichtig ist.

## Dateien als Base64 für APIs und Einbettungen laden

Nutze diese Funktionen, wenn du den eigentlichen Dateiinhalt brauchst, nicht nur das Dateiobjekt oder einen Link.

### Mit `loadFileAsBase64()` und `loadFileAsBase64URL()` Dateiinhalte zurückgeben

Nutze `loadFileAsBase64()`, um rohen Base64-Text zurückzugeben. Nutze `loadFileAsBase64URL()`, wenn du eine fertige `data:`-URL brauchst.

Nutze sie, wenn du:

* Dateiinhalte an eine API senden willst.
* eine Datei in erzeugte Ausgaben einbetten willst.
* binären Dateiinhalt als Text für eine Folgeanfrage speichern willst.
* einen bestimmten Anhang über den Dateinamen aus einem Datensatz lesen willst.

`loadFileAsBase64(any)`\
`loadFileAsBase64(nid, string)`\
`loadFileAsBase64URL(any)`\
`loadFileAsBase64URL(nid, string)`

* `any`: das Dateiobjekt oder die unterstützte Dateiquelle, die du kodieren willst
* `nid`: der Datensatz, der den Dateianhang enthält
* `string`: der exakte Dateiname des Anhangs, den du kodieren willst

`loadFileAsBase64()` gibt einen String zurück. `loadFileAsBase64URL()` gibt einen String zurück.

#### Schauen wir uns einige Beispiele an:

```ninox
loadFileAsBase64("Attachment")
```

Gibt den Dateiinhalt als Base64-String zurück.

```ninox
loadFileAsBase64(this, "myFoto.jpg")
```

Gibt den Anhang `myFoto.jpg` aus dem aktuellen Datensatz als Base64-String zurück.

```ninox
loadFileAsBase64(photo)
```

Gibt die Datei aus dem Feld `Photo` als Base64-String zurück.

```ninox
loadFileAsBase64URL("Attachment")
```

Gibt den Dateiinhalt als `data:`-URL zurück.

```ninox
loadFileAsBase64URL(this, "myPhoto.jpg")
```

Gibt den Anhang `myPhoto.jpg` aus dem aktuellen Datensatz als Base64-Data-URL zurück.

```ninox
loadFileAsBase64URL(photo)
```

Gibt die Datei aus dem Feld `photo` als Base64-Data-URL zurück.

Tipps:

* Base64 vergrößert die Nutzlast.
* Nutze es nur, wenn das Zielsystem wirklich eingebettete Inhalte braucht.
* Nutze die Form mit Datensatz und Name, wenn ein Datensatz mehrere Anhänge hat und du eine bestimmte Datei brauchst.
* Nutze `loadFileAsBase64URL()`, wenn das Ziel eine fertige `data:`-URL statt rohem Base64-Text erwartet.

{% hint style="info" %}
Das Erstellen und Teilen von Dateien kann je nach Client-Fähigkeiten abweichen. Teste Export- und Freigabe-Skripte in den Umgebungen, die dein Team am häufigsten nutzt.
{% 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://docs.ninox.com/ninox-scripting/de/automate-your-workflows/work-with-functions/files-and-export.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.
