Help:
Barcode Filtering with Regex
Every scan is tested against up to two regex filters before it is accepted. This stops untwanted barcodes (e.g. on shipping labels) to be accepted, if they differ from the regex match of your regex formula.
Attribute 1 is your main code (column B). Attribute 2 is an optional second code (column C, e.g. a serial number) and is only active when "Enable Attribute 2" is switched on.
A scan that matches neither filter is rejected with "Rejected: Fails Regex Formulas!"
Ready-made regex formulas/expressions:
The five pieces you need most: ^ start, $ end, \d a digit, [a-z,A-Z,öäü,ÖÄÜ] letters, {min,max} how many times. ^ and $ matter - without them a filter matches if the pattern appears anywhere in the code, which lets unwanted barcodes through.
Full syntax reference
The app uses JavaScript regular expressions. The complete reference is MDN's guide:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
To try a formula before using it, https://regex101.com (set the flavour to ECMAScript/JavaScript) shows live which codes match and explains each part.
Or let an AI write the regex pattern for you:
You do not need to learn regex. A good AI assistant (Claude, ChatGPT, Gemini …) writes formulas pretty reliably these days if you describe the case concretely. Give it examples of codes that should match and codes that should not, and ask for a JavaScript regex:
"Write me a JavaScript regex. It should match patterns like these: 4012345678901, 4009300021001. It should not match patterns like this: SN-88213, 12345. Anchored with ^ and $."
Paste the result into the settings field. If it is invalid, the app warns you when saving.
Two extra checks:
Check digit (EAN/UPC): any Attribute-1 code with 12 or 13 digits is additionally verified by its checksum. Misreads are rejected with "Rejected: Invalid Checksum!" - this catches errors that regex alone cannot.
Confirmation count (debounce): with confirmation ≥ 2 the same code must be read identically x times in a row before it gets accepted.
How the two attributes are routed:
If Attribute 2 scanning is enabled, the app decides automatically: if a scan matches the Attribute 2 regex and a row is waiting for a serial (current cell in column B filled, column C still empty), it inserts the Attribute 2 matching code to column C. Otherwise a match on Attribute 1 starts a new row. Scanning an attribute 2 with no row currently "waiting" is blocked with "Scan Attribute 1 first".
With Volume Hold Mode you decide instead of the app: hold volume-down for Attribute 1, volume-up for Attribute 2. Nothing is accepted unless a key is held - useful when both codes look similar.
CSV Database Lookup:
You can load two independent product lists. After every scan into column B, the app looks the barcode up in both and fills in the connected product data automatically.
The two databases
My DB needs these columns: SKU, Name, GTIN (or EAN), Own ID (or ID), MPN
Supplier DB needs: EAN (or GTIN), Name, MPN
Column order does not matter - the app finds them by name. If one is missing, the import fails naming the column. Comma, semicolon and tab separators are detected automatically, and quoted fields are handled. Both lists are stored on the device and survive restarts.
What gets filled in
A scan in B is searched in three places: My DB GTIN, My DB Own ID, Supplier DB EAN. Matching happens case-insensitively and ignores surrounding spaces. Results go to:
A - SKU
E - product name
H - MPN
F - quantity, set to 1 if still empty
Clearing a cell in B also clears A, E and H for that row.
Reading the brackets
When a code is found in several places, the values are shown next to each other, and the brackets tell you where each came from:
Notation Source
12345 My DB, matched on GTIN
(12345) My DB, matched on Own ID
[12345] Supplier DB, matched on EAN
So 4711 [4712] means: your own database and the supplier database both know this code but give different numbers - usually worth a look.
Double-entry check
If one database contains the same code on several genuinely different products, the row is flagged:
Column A reads duplicate detected!: followed by all found values
All candidates are listed separated by ; in A, E and H
The row is highlighted in colour in the table
Identical duplicate rows do not trigger this. Records only count as different if their content actually differs (My DB: SKU, name and MPN; Supplier DB: name and MPN). A product listed twice identically in your CSV stays quiet - only a real conflict is reported.
The check can be switched off separately per database ("Duplicate check My DB" / "Supplier DB"). Switched off, the first match is used without a warning.
Note that a hit in both databases is not a duplicate - that is the normal case shown with brackets. The check only looks within each database.
Changing databases later
Loading or clearing a database re-runs the lookup for every row in column B on the current sheet, so existing rows are updated immediately.
Hilfe:
Barcode-Filterung mit regulären Ausdrücken
Jeder Scan wird anhand von bis zu zwei regulären Ausdrücken geprüft, bevor er akzeptiert wird. Dadurch wird verhindert, dass unerwünschte Barcodes (z. B. auf Versandetiketten) akzeptiert werden, wenn sie nicht mit dem regulären Ausdruck Ihrer Formel übereinstimmen.
Attribut 1 ist Ihr Hauptcode (Spalte B). Attribut 2 ist ein optionaler zweiter Code (Spalte C, z. B. eine Seriennummer) und ist nur aktiv, wenn „Attribut 2 aktivieren“ eingeschaltet ist.
Ein Scan, der keinem der Filter entspricht, wird mit der Meldung „Rejected: Fails Regex Formulas!“ zurückgewiesen. Siehe auch:
Vorgefertigte Regex-Formeln/Ausdrücke:
Die fünf Elemente, die Sie am dringendsten benötigen: ^ Start, $ Ende, \d eine Ziffer, [a-z,A-Z,öäü,ÖÄÜ] Buchstaben, {min,max} wie oft. ^ und $ sind entscheidend - ohne sie trifft ein Filter zu, wenn das Muster an beliebiger Stelle im Code vorkommt, wodurch unerwünschte Barcodes durchgelassen werden.
Vollständige Syntax-Referenz
Die App verwendet reguläre Ausdrücke in JavaScript. Die vollständige Referenz finden Sie im MDN-Leitfaden: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions
Um eine Formel vor der Verwendung zu testen, zeigt https://regex101.com (stellen Sie die Variante auf ECMAScript/JavaScript ein) live, welche Codes übereinstimmen, und erklärt jeden Teil.
Oder lassen Sie einen KI-Assistenten das Regex-Muster für Sie erstellen:
Sie müssen sich nicht unbedingt selbst mit regulären Ausdrücken auseinandersetzen. Ein guter KI-Assistent (Claude, ChatGPT, Gemini …) erstellt inzwischen ziemlich zuverlässig Formeln, wenn Sie den genau beschreiben was er tun soll. Geben Sie ihm Beispiele für Codes, die übereinstimmen sollen, und für solche, die nicht übereinstimmen sollen, und fragen Sie nach einem JavaScript-Regex:
„Schreib mir einen JavaScript-Regex-Ausdruck. Er soll Muster wie diese erkennen: 4012345678901, 4009300021001. Er soll Muster wie diese nicht erkennen: SN-88213, 12345. Mit ^ und $ verankert.“
Fügen Sie das Ergebnis in das Einstellungsfeld ein. Sollte es ungültig sein, warnt Sie die App beim Speichern.
Zwei zusätzliche Prüfungen/Filter:
Prüfziffer (EAN/UPC): Jeder 12- oder 13-stellige Attribut-1-Code wird zusätzlich anhand seiner Prüfsumme überprüft. Fehllesungen werden mit „Rejected: Invalid Checksum!“ zurückgewiesen - dadurch werden Fehler ausgeschlossen, die mit regulären Ausdrücken allein nicht erkannt werden können.
Bestätigungsanzahl (debounce): Bei einer Bestätigung von ≥ 2 muss derselbe Code x-mal hintereinander identisch gelesen werden, bevor er akzeptiert wird.
Wie die beiden Atribute verarbeitet werden:
Ist das Scannen von Attribut 2 aktiviert, entscheidet die App automatisch: Wenn ein Scan dem regulären Ausdruck für Attribut 2 entspricht und eine Zeile auf eine Seriennummer wartet (aktuelle Zelle in Spalte B ausgefüllt, Spalte C noch leer), fügt sie den mit Attribut 2 übereinstimmenden Code in Spalte C ein. Andernfalls beginnt bei einer Übereinstimmung mit Attribut 1 eine neue Zeile. Das Scannen von Attribut 2, ohne dass derzeit eine Zeile „wartet“, wird mit der Fehlermeldung „Scan Attribute 1 first“ blockiert.
Im Lautstärketaste-Modus entscheiden Sie anstelle der App: Halten Sie die Lautstärketaste „Leiser“ für Attribut 1 und die Lautstärketaste „Lauter“ für Attribut 2 gedrückt. Es wird nichts akzeptiert, solange keine Taste gedrückt gehalten wird - nützlich, wenn beide Attribute ähnlich ähnliche codes matchen müssen oder für mehr sicherheit beim bedienen.
CSV-Datenbankabfrage:
Sie können zwei unabhängige Produktlisten laden. Nach jedem Scan in Spalte B sucht die App den Barcode in beiden Listen und füllt die zugehörigen Produktdaten automatisch ein.
Die zwei Datenbanken:
My DB braucht diese Spalten: SKU, Name, GTIN (or EAN), Own ID (or ID), MPN
Supplier-DB braucht: EAN (or GTIN), Name, MPN
Die Reihenfolge der Spalten spielt keine Rolle - die App findet sie anhand ihres Namens. Fehlt eine Spalte, schlägt der Import unter Angabe der Spaltenbezeichnung fehl. Trennzeichen wie Komma, Semikolon und Tabulator werden automatisch erkannt, und Felder in Anführungszeichen werden entsprechend verarbeitet. Beide Listen werden auf dem Gerät gespeichert und bleiben auch nach einem Neustart erhalten.
Was ausgefüllt wird:
Ein Scan in B wird an drei Stellen durchsucht: „My DB GTIN“, „My DB Own ID“, „Supplier DB GTIN“. Der Abgleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung und ignoriert umgebende Leerzeichen. Die Ergebnisse werden in folgende Felder übertragen:
A - SKU
E - Produktname
H - MPN
F - Menge, wird auf 1 gesetzt, wenn das Feld noch leer ist
Das Löschen einer Zelle in B löscht auch A, E und H für diese Zeile.
Deutung der Klammern
Wenn ein Code an mehreren Stellen gefunden wird, werden die Werte nebeneinander angezeigt, und die Klammern geben an, woher die jeweiligen Werte stammen: Notation Quelle
12345 Meine Datenbank, Abgleich anhand der GTIN
(12345) Meine Datenbank, Abgleich anhand der Own ID
[12345] Lieferantendatenbank, Abgleich anhand der GTIN
„4711 [4712]“ bedeutet also: Sowohl Ihre eigene Datenbank als auch die Lieferantendatenbank kennen diesen Code, geben jedoch unterschiedliche Nummern an - dies ist in der Regel einen Blick wert.
Duplikateintrags- / Konfliktprüfung
Wenn eine Datenbank denselben Code für mehrere tatsächlich unterschiedliche Produkte enthält, wird die Zeile markiert:
In Spalte A steht „Duplikat erkannt!“, gefolgt von allen gefundenen Werten.
Alle Kandidaten werden in den Spalten A, E und H durch ein Semikolon (;) getrennt aufgelistet.
Die Zeile wird in der Tabelle farblich hervorgehoben.
Identische doppelte Zeilen lösen dies nicht aus. Datensätze gelten nur dann als unterschiedlich, wenn sich ihr Inhalt tatsächlich unterscheidet (My DB: SKU, Name und MPN; Supplier-DB: Name und MPN). Ein Produkt, das in Ihrer CSV-Datei zweimal identisch aufgeführt ist, bleibt unberücksichtigt - es wird nur ein echter Konflikt gemeldet.
Die Prüfung kann separat pro Datenbank deaktiviert werden („Duplikatsprüfung My DB“ / „Supplier-DB“). Ist sie deaktiviert, wird die erste Übereinstimmung ohne Warnung verwendet.
Beachten Sie, dass ein Treffer in beiden Datenbanken kein Duplikat ist - dies ist der normale Fall, der in Klammern dargestellt wird. Die Prüfung erfolgt nur innerhalb der jeweiligen Datenbank.
Spätere Änderung der Datenbanken
Beim Laden oder Leeren einer Datenbank wird die Suche für jede Zeile in Spalte B des aktuellen Blattes erneut durchgeführt, sodass vorhandene Zeilen sofort aktualisiert werden.
Letzte Aktualisierung: Juli 2026
Diese Datenschutzerklärung informiert dich darüber, wie die App InventoryFlow mit Daten umgeht.
1. Keine Erfassung oder Übertragung von Daten
Die App funktioniert vollständig offline.
Keine Erhebung: Es werden keinerlei personenbezogene Daten, Nutzungsdaten oder Gerätedaten erfasst, gespeichert oder verarbeitet, die nicht im direkten Zusammenhang mit der Scan-Funktion stehen.
Keine Übertragung: Es gibt keine Verbindung zu externen Servern. Es werden keine Daten an den Entwickler oder an Dritte übermittelt.
Keine Werbung & kein Tracking: Die App enthält keine Werbenetzwerke, Analyse-Tools (wie Google Analytics, Firebase etc.) oder Tracker.
2. Kamera-Zugriff (Barcode-Scanner)
Die App ist ein Barcode-Scanner und verarbeitet Kameradaten rein lokal.
Lokale Verarbeitung: Der Videostream der Kamera wird ausschließlich in Echtzeit und direkt auf deinem Gerät verarbeitet, um die Barcodes zu erkennen und optional Bilder von ihnen abzuspeichern.
Keine Übertragung: Das Kamerabild wird zu keinem Zeitpunkt ins Internet gestreamt oder auf externe Server hochgeladen.
3. Lokale Speicherung (Manueller Export & Optionale Auto-Save-Funktionen)
Die App bietet Funktionen zum Export der Listen und nützlichen weiteren Daten.
Manueller CSV-Export: Du kannst deine erstellten Barcode-Listen jederzeit manuell als CSV-Datei exportieren und auf deinem Gerät speichern.
Optionales Auto-Save (standardmäßig deaktiviert): Die automatische Speicherung von gescannten Barcodes (als CSV-Liste), und/oder von Bildern erfolgreicher Scans, ist standardmäßig ausgeschaltet. Du kannst diese Funktionen bei Bedarf in den Einstellungen der App manuell aktivieren.
Ausschließlich lokal: Egal ob manueller Export oder Auto-Save – alle CSV-Dateien und Bildaufnahmen werden ausschließlich lokal auf deinem eigenen Gerät gespeichert. Es findet keine Cloud-Synchronisierung statt und ich habe als Entwickler zu keinem Zeitpunkt Zugriff auf deine Listen oder Bilder.
4. Zahlungsabwicklung
Da es sich um eine kostenpflichtige App handelt, wird der Kaufprozess vollständig über den Google Play Store (Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland) abgewickelt. Es gelten die Datenschutzbestimmungen von Google. Ich erhalte von Google lediglich anonymisierte Verkaufsstatistiken und keine personenbezogenen Zahlungsdaten von dir.
5. Deine Rechte
Da ich keine Daten von dir speichere oder verarbeite, kann ich dir gegenüber keine Auskunft über gespeicherte Daten geben, diese löschen oder berichtigen. Du hast die volle Kontrolle über alle in der App erstellten Daten (Listen und Bilder), da diese ausschließlich auf deinem Gerät liegen.
6. Kontakt
Bei Fragen zu dieser Datenschutzerklärung kannst du mich unter folgender E-Mail-Adresse kontaktieren:
E-Mail: [Deine E-Mail-Adresse hier eintragen]
Last Updated: July 2026
This Privacy Policy explains how the App InventoryFlow handles data.
1. No Data Collection or Transmission
The App operates 100% offline.
No Collection: The App does not collect, store, or process any personal data, usage data, or device identifiers that are not directly correlated to the scanning.
No Transmission: There is no connection to external servers. No data is transmitted to the developer or any third parties.
No Ads & No Tracking: The App does not contain any advertising networks, analytics tools (such as Google Analytics or Firebase), or trackers.
2. Camera Access (Barcode Scanner)
As a barcode scanner, the App processes camera data entirely locally.
Local Processing: The camera feed is processed live and entirely locally on your device solely to detect and decode barcodes and optionally save their image.
No Transmission: At no point is the live video feed transmitted to the internet or uploaded to any external servers.
3. Local Storage (Manual Export & Optional Auto-Save Features)
The App offers to features to export your scanned lists and optionally other useful data like images.
Manual CSV Export: You can manually export your created barcode lists as a CSV file and save them locally on your device at any time.
Optional Auto-Save (Disabled by Default): The automatic saving functions for scanned barcodes (as a CSV list), and/or images of successful scans, are disabled by default. You can choose to enable them manually within the App settings.
Strictly Local: Whether through manual export or Auto-Save, all CSV files and captured images are stored exclusively locally on your own device. There is no cloud synchronization, and the developer has no access to your CSV lists or image files at any time.
4. Payment Processing
As this is a paid app, the purchase process is handled entirely by the Google Play Store (Google LLC / Google Ireland Limited). Their respective privacy policies apply. The developer only receives anonymized sales statistics from Google and does not collect or store any of your personal payment information.
5. Your Rights
Since no personal data is collected or processed by the developer, there is no data to access, rectify, or delete. You have full control over your data (lists and images), as it remains entirely on your device.
6. Contact
If you have any questions regarding this Privacy Policy, please contact:
Email: [Insert your email address here]