Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flotiq/flotiq-excel-migrator
Module for migrating Flotiq data to and from xlsx file
https://github.com/flotiq/flotiq-excel-migrator
Last synced: 15 days ago
JSON representation
Module for migrating Flotiq data to and from xlsx file
- Host: GitHub
- URL: https://github.com/flotiq/flotiq-excel-migrator
- Owner: flotiq
- License: mit
- Created: 2022-11-25T09:12:41.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-05-08T14:34:29.000Z (over 1 year ago)
- Last Synced: 2024-09-19T10:48:30.080Z (2 months ago)
- Language: JavaScript
- Size: 89.8 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flotiq-Excel migrator
This module migrates Flotiq data to and from an xlsx file.
It was made solely for [flotiq-cli](https://github.com/flotiq/flotiq-cli). However, you can use it independently.## Setup
Add this module to your project and import functions from flotiq-xlsx-migrate.js.
Run `yarn` to install packages.
## Export
`exportXlsx` is the module's function for exporting Flotiq CTD and CO to the xlsx file.
### Usage
Call function exportXlsx with options object as an attribute, for example:
```
let flotiqXlsx = require("flotiq-excel-migrator")
let exportOptions = {
apiKey: "[Flotiq API Key]",
ctdName: "[CTD API Name]"
}
const exportFromFlotiq = async () => {
let result = await flotiqXlsx.exportXlsx(exportOptions);
console.log(result);
}
exportFromFlotiq();
```Function returns the following information:
* FilePath
* Number of Content Objects for export
* Number of Content Objects successfully exported
* errors data### Options parameters
Options object accepts the following parameters:
* apiKey - API key to your Flotiq account,
* ctdName - API name of Content Type Definition you wish to export,
* filePath (optional) - the directory to which the xlsx file is to be saved, the current directory by default,
* limit (optional) - Number of Content Objects you wish to export, exports up to 10 000 Content Objects by default,
* saveFile (optional) - boolean value determining whether to save the xlsx file in the directory, true by default. If the value is false, the function will return the parameter `data` with data from Flotiq converted for MS Excel,
* logResults (optional) - boolean value determining whether to type out results into the console, true by default.### Notes
* Exported CTD is saved as plain text of properties id's. No metadata is being exported.
* `Max string length` for all values is set to 30.000 because MS Excel has trouble handling text with length > 30 000 in one cell.### Result example
```
{
directoryPath: '[_dirname]//test.xlsx',
errors: null,
coTotal: 3,
co_success: 3
}
```## Import
`importXlsx` is the module's function for importing an xlsx file to Flotiq.
### Usage
Call function exportXlsx with options object as an attribute, for example:
```
let flotiqXlsx = require("flotiq-excel-migrator")
let importOptions = {
apiKey: "[Flotiq API Key]",
ctdName: "[CTD API Name]",
filePath: "[path to xlsx file]"
}
const importToFlotiq = async () => {
let result = await flotiqXlsx.importXlsx(importOptions);
console.log(result);
}
importToFlotiq();
```Function returns the following promise:
For every sheet in the workbook:
* Number of Content Objects successfully imported
* Number of errors in Content Object import
* errors data (object)If options validation error occurs, the function will not return the number of errors and CO exported; instead, it will return information about the invalid options parameter.
### Options parameters
Options object accepts the following parameters:
* apiKey - API key to your Flotiq account,
* ctdName - API name of Content Type Definition you wish to export,
* filePath - the directory to the xlsx file you wish to import data from,
* limit (optional) - number of Content Objects you wish to import, imports up to 10 000 Content Objects by default,
* logResults (optional) - boolean value determining whether to type out results into the console, true by default.
* updateExisting (optional) - boolean value determining whether to update existing Content Objects, true by default.
* batchLimit (optional) - number of Content Objects imported per batch call, 100 by default.### Notes
* valid XLSX file looks just like the one that exportXlsx saves. The first row on the sheet (header) should have the names of CTD's properties. Every following row is a separate Content Object, for example:
| id | name | age |
|--|--|--|
| person-1 | John | 30 |
| person-2 | Alex | 20 |* importXlsx allows you to import many sheets from the same workbook. However, these sheets must be dedicated to the same CTD and have this CTD's properties in the header.
* Parameter LIMIT limits the number of Content Objects you will import from XLSX works individually for every sheet in the workbook.### Result example
Notice that the import function gives different results for every sheet from your xlsx file, so to read result errors `result.[excel sheet name].sheetErrors`.
```
{
Sheet1: {
sheetImportedCoCount: 98,
sheetErrorsCount: 2,
sheetErrors: [ [Object] ]
}
Sheet2: {
sheetImportedCoCount: 100,
sheetErrorsCount: 0,
sheetErrors: []
}
}
```## Data mapping
The form in which Flotiq data is exported to / imported from xlsx varies on property type:
| Flotiq field property | Form in which data is exported to xlsx |
|--|--|
| Text | Text |
| Textarea | Text |
| Markdown | Text (with markdown syntax) |
| Rich text | Text (with HTML tags) |
| Email | Text |
| Number | Number (with ms excel's default decimal separator) |
| Radio | Text |
| Checkbox | TRUE / FALSE |
| Select | Text |
| Relation | API Url's in the form of text, separated with commas, for example: `/api/v1/content/[ctdName]/[coName1],/api/v1/content/[ctdName]/[coName2]` |
| List | JSON |
| Geo | JSON |
| Media | API Url in form of text, separated with commas, for example: `/api/v1/content/_media/[mediaId1],/api/v1/content/_media/[mediaId2]` |
| Date time | Date |
| Block | JSON |## Notes
* `Max string length` for all values is set to 30.000 because MS Excel has trouble handling text with length > 30 000 in one cell.