Alternative methods of importing into Storyspace and Tinderbox

In my previous article about exporting data from FileMaker Pro to Storyspace and Tinderbox, I showed a method which relied on a custom script to extract a carefully formatted text file ready for import.

Thankfully some of our readers are longstanding power users of Tinderbox in particular, and I am very grateful to Mark A for reminding me that I should also cover some potentially more direct and simpler ways of moving data: using formats such as Comma-Separated Values (CSV).

FileMaker Pro export

sspacec1

I have added a third ‘torture’ test record to my test database which contains some potential traps for these different formats, to explore what might break the process and corrupt the imported data.

To export in one of these formats, use the Export Records… command in the File menu.

sspacec2

In the Export Records to File save dialog, select comma-separated text format, and click on the Save button.

sspacec3

In the next dialog, add the fields which you want to export, perhaps using the Move All button, and drag them into the correct order. Then click on the Export button.

The Import File

sspacec4

You will then get a text file containing just the records exported, without any header line specifying which attributes to set in Storyspace/Tinderbox. To add that header line, open the .csv text file in your favourite text editor, and add that first line in CSV format. In my case, that line reads
"Title","StartDate","EndDate","Actor","Location","Text"

Save that CSV file.

Storyspace/Tinderbox

Then drag and drop the CSV file into the Map view in Storyspace or Tinderbox. It will be exploded automatically into separate writing spaces or notes, with the container being the whole text file, and the exploded writing spaces within.

sspacec5

The snags with CSV as an import format are that the text loses its paragraph structure, and text containing “,” sequences (with or without intervening white space characters) gets slightly munged.

sspacec6

It is quick, simple, and is likely to cope with larger import files than more complex schemes using Explode. If you want to set the imported writing spaces or notes to use a specific prototype, you will have to ensure that is added to the CSV import file somehow, either using a text editor on the file, or by adding a dummy field to your database containing the prototype name, to be assigned to the $Prototype attribute during import.

sspacec7

Interestingly my AppleScript approach coped much better in retaining the formatting of the $Text, which kept its paragraphs, tab, “, ” text, even its colon, so it was worth the effort.

There are other options for importing data too: you could write the records out into a spreadsheet format, open that in a spreadsheet, and copy and paste that into your Map view, for example. Storyspace and Tinderbox do also handle tab-delimited text, but I have always preferred to use CSV when it is available, as the results are usually more consistent and reliable. Your mileage may well vary. With a good range of methods supported, you can experiment to see which works best with your data – the joy of using software with a rich feature set.

Mark also points out that once you have imported and exploded a text file of whatever format, and have checked the newly created writing spaces or notes, you should move them out of their containers and remove those containers, which will have very large $Text contents. As importing text files is non-destructive, you can always refer back to the text file if you notice that any of the contents of the imported attributes have become munged. Leaving large notes hanging around can seriously impair your document’s performance.

Finally, Mark – who is apparently notorious for pushing Tinderbox’s import features to their limits with huge bibliographies – stresses that it may be worth performing a series of several smaller imports than one huge one. If you’re working with a database like FileMaker Pro, this is easy, as you can select, say, 50 or 100 records at a time, rather than going for the whole thousand or more.

Happy hypertexting!