Refactor metadata column mappings in README and PowerShell script
- Updated README to reflect changes in metadata column mappings structure, separating system and custom columns. - Modified PowerShell script to support new metadata column mapping structure. - Introduced functions to handle taxonomy fields and improved error handling during item saving. - Enhanced import functionality to manage existing files and handle required fields more effectively.
This commit is contained in:
53
README.md
53
README.md
@@ -79,7 +79,8 @@ Beim Export wird automatisch eine `MappingTable.json` erzeugt. Diese Datei entha
|
||||
|
||||
- `LibraryMappings`: Mapping von Quellbibliothek auf Zielbibliothek
|
||||
- `ListMappings`: Mapping von Quellliste auf Zielliste
|
||||
- `MetadataColumnMappings`: Mapping der Metadaten-Spalten je Liste/Bibliothek
|
||||
- `MetadataColumnMappings.SystemColumns`: erkannte Systemspalten
|
||||
- `MetadataColumnMappings.CustomColumns`: erkannte eigene Fachspalten
|
||||
|
||||
Beispiel:
|
||||
|
||||
@@ -110,26 +111,56 @@ Beispiel:
|
||||
"Hidden": false
|
||||
}
|
||||
],
|
||||
"MetadataColumnMappings": [
|
||||
"MetadataColumnMappings": {
|
||||
"SystemColumns": [
|
||||
{
|
||||
"ObjectType": "List",
|
||||
"ContainerSourceTitle": "Kalender",
|
||||
"SourceInternalName": "EventDate",
|
||||
"SourceCanonicalInternalName": "EventDate",
|
||||
"SourceSupportingInternalNames": [],
|
||||
"TargetInternalName": "EventDate",
|
||||
"DisplayName": "Beginnt",
|
||||
"TypeAsString": "DateTime",
|
||||
"Hidden": false,
|
||||
"ReadOnly": false,
|
||||
"Sealed": true,
|
||||
"IsSystemColumn": true,
|
||||
"ImportSupported": true
|
||||
}
|
||||
],
|
||||
"CustomColumns": [
|
||||
{
|
||||
"ObjectType": "DocumentLibrary",
|
||||
"ContainerSourceTitle": "Documents",
|
||||
"SourceInternalName": "DHS2016Persdat",
|
||||
"TargetInternalName": "Persdat",
|
||||
"DisplayName": "Personaldaten",
|
||||
"TypeAsString": "Text",
|
||||
"SourceInternalName": "SecurityClearance",
|
||||
"SourceCanonicalInternalName": "SecurityClearance",
|
||||
"SourceSupportingInternalNames": [
|
||||
"SecurityClearance_0"
|
||||
],
|
||||
"TargetInternalName": "GMNSecurityClearance",
|
||||
"DisplayName": "Security Clearance",
|
||||
"TypeAsString": "TaxonomyFieldType",
|
||||
"Hidden": false,
|
||||
"ReadOnly": false,
|
||||
"Sealed": false
|
||||
"Sealed": false,
|
||||
"IsSystemColumn": false,
|
||||
"ImportSupported": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Fuer das Mapping ist vor allem relevant:
|
||||
|
||||
- `TargetTitle`: Zielname von Liste oder Bibliothek
|
||||
- `TargetInternalName`: Zielfeld fuer die exportierte Metadatenspalte
|
||||
- `SystemColumns`: SharePoint-Standardfelder wie `EventDate`, `EndDate`, `Title` oder `Created`
|
||||
- `CustomColumns`: eigene Fachspalten, die im Ziel oft umbenannt oder anders aufgebaut sind
|
||||
- `SourceSupportingInternalNames`: technische Begleitspalten wie `_0` werden nur noch informativ aufgefuehrt und nicht separat gemappt
|
||||
- `ImportSupported`: steuert, ob eine Spalte beim Import ueberhaupt beruecksichtigt wird
|
||||
- Taxonomy-Felder werden beim Import ueber den exportierten `TermGuid` gesetzt; dabei wird angenommen, dass derselbe Term im Ziel bereits mit identischer GUID existiert
|
||||
|
||||
Wenn eine Ziel-Liste oder Ziel-Bibliothek nicht existiert, gibt das Skript eine Warnung aus, dass dieser Container manuell angelegt werden soll.
|
||||
|
||||
@@ -154,13 +185,17 @@ Wenn eine Ziel-Liste oder Ziel-Bibliothek nicht existiert, gibt das Skript eine
|
||||
- `MappingTable`: JSON-Datei mit Listen-, Bibliotheks- und Spalten-Mappings
|
||||
- `ImportFiles`: importiert nur Dateien/Bibliotheken
|
||||
- `ImportLists`: importiert nur Listen
|
||||
- `OverwriteFiles`: ueberschreibt vorhandene Dateien beim Import
|
||||
- `Overwrite`: ueberschreibt vorhandene Dateien beim Import
|
||||
|
||||
Hinweis:
|
||||
|
||||
- Wenn weder `ImportFiles` noch `ImportLists` gesetzt sind, werden beim Import beide Bereiche verarbeitet.
|
||||
- Wird `MappingTable` nicht angegeben, verwendet das Skript standardmaessig `OutputPath\MappingTable.json`.
|
||||
- Die alte CSV-Variante wird fuer reines Feldmapping weiterhin als Fallback gelesen.
|
||||
- Werden keine Schalter gesetzt, leitet das Skript den Modus weiterhin aus `SourceUrl` und `TargetUrl` ab.
|
||||
- Wenn `Overwrite` nicht gesetzt ist und eine Datei bereits existiert, wird bei aktiver Versionierung eine neue Version geschrieben; ohne Versionierung wird die Datei uebersprungen.
|
||||
- Nicht importierbare Systemfelder wie `Attachments`, `Created`, `Modified`, `Author` oder `Editor` werden automatisch aus der MappingTable herausgehalten bzw. beim Import uebersprungen.
|
||||
- Vor dem Speichern prueft das Skript fehlende Pflichtfelder. Wenn ein einzelnes Listen- oder Datei-Metadatenobjekt trotzdem nicht gespeichert werden kann, wird es mit Kontext-Warnung uebersprungen und der Import laeuft weiter.
|
||||
|
||||
## Beispiele
|
||||
|
||||
@@ -212,7 +247,7 @@ Anschliessend:
|
||||
-Import `
|
||||
-MappingTable "C:\Temp\SP-Export\MappingTable.json" `
|
||||
-ImportFiles `
|
||||
-OverwriteFiles
|
||||
-Overwrite
|
||||
```
|
||||
|
||||
### Nur Listen importrelevant ausfuehren
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user