Download aller Attachments einer Tabelle bzw. der Ansicht einer Tabelle
Problem:
Ich möchte einen Download aller Attachments, die den Datensätzen einer Tabelle hinterlegt sind (zumeist sind das pdf-Files).
Bisheriger Lösungsversuch:
Mittels eines kleinen Python-Scripts kann ich auf die Tabelle zugreifen und bekomme die Datensätze angezeigt. Aber ich weiß nicht, wie ich auf die Attachments zugreifen kann.
Hier der Versuch meines Scripts:
import requests
import os
# === KONFIGURATION ===
API_KEY = "MeinApiKey"
TEAM_ID = "....."
DATABASE_ID = "....."
TABLE_ID = "G"
DOWNLOAD_ORDNER = "ninox_downloads"
# API-URL mit Variablen
url = f"https://api.ninox.com/v1/teams/....../databases/........./tables/G/records"
headers = {
"Authorization": f"Bearer MeinApiKey"
}
# Erstelle den Download-Ordner, falls nicht vorhanden
os.makedirs(DOWNLOAD_ORDNER, exist_ok=True)
# API-Request senden
response = requests.get(url, headers=headers)
data = response.json()
print(data) # Debug-Ausgabe der API-Daten
# Alle Attachments herunterladen
for record in data:
if "Attachments" in record:
for file_url in record["Attachments"]:
file_name = file_url.split("/")[-1]
file_path = os.path.join(DOWNLOAD_ORDNER, file_name)
# Datei herunterladen
file_response = requests.get(file_url)
with open(file_path, "wb") as file:
file.write(file_response.content)
print(f"Heruntergeladen: {file_name}")
print("Alle Dateien wurden erfolgreich heruntergeladen!")
1 Antwort
-
WORKAROUND GEFUNDEN
Ich glaube, dass man den direkten Download aller Files einer Tabelle nicht ansprechen kann. Ich habe aber einen Workaround gefunden:- Download einer Datensicherung
- Ergebnis: MEINEDATENBANK.ninox
- Umbenennen dieser Datei in: MEINEDATENBANK.zip
- Entpacken der Datei, Ergebnis: MEINEDATENBANK
- Sieht man sich die Filestruktur in MEINEDATENBANK dann an, dann sieht man dort einen Ordner files. In dem befinden sich alle Attachments. Die Buchstaben der Unterordner von files geben die Tabelle in der NINOX-Datenbank an. Den Buchstaben der NINOX-Tabelle findet man heraus, indem man in ein Funktionsfeld tableId("MEINETABELLE") schreibt.
- Die einzelnen Attachments finden sich dann in nummerierten Unterordnern. Um nicht alle Unterordner einzeln öffnen zu müssen und die Files herauszukopieren, habe ich ein kleines vbs-Script geschrieben, das Attachments (in meinem Beispiel aus dem Ordner G) herauskopiert und in einen Ordner XYZ schreibt.
- Hier das vbs-Script:
Dim fso Dim HauptOrdner Dim UnterOrdner Dim Datei Dim ZielOrdner Dim ZielPfad ' Erstelle ein FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' Pfad zum Hauptordner Dim HauptPfad HauptPfad = "I:\NINOX_Datensicherung\MEINEDATENBANK\files\G" ' Pfad zum Zielordner ZielPfad = fso.BuildPath(HauptPfad, "..\XYZ") ' Erstelle den Zielordner, falls er nicht existiert If Not fso.FolderExists(ZielPfad) Then fso.CreateFolder ZielPfad End If ' Setze den Zielordner Set ZielOrdner = fso.GetFolder(ZielPfad) ' Durchsuche alle Unterordner im Hauptordner Set HauptOrdner = fso.GetFolder(HauptPfad) For Each UnterOrdner In HauptOrdner.SubFolders ' Durchsuche alle Dateien im Unterordner For Each Datei In UnterOrdner.Files ' Kopiere die Datei in den Zielordner fso.CopyFile Datei.Path, fso.BuildPath(ZielPfad, Datei.Name) Next Next ' Aufräumen Set fso = Nothing Set HauptOrdner = Nothing Set UnterOrdner = Nothing Set Datei = Nothing Set ZielOrdner = Nothing MsgBox "Dateien wurden erfolgreich in den Ordner XYZ kopiert."
- Gut wäre es - das fällt mir jetzt aber leider erst rückwirkend ein, wenn man alle Attachments sinnvoll benennt, z.B. YYYY_MM_DDDD__Rn_Firmenbezeichnung
Content aside
- gesternZuletzt aktiv
- 1Antworten
- 26Ansichten
-
1
Folge bereits