18

I have a chrome extension that saves a bunch of data to chrome.storage.local. I'm trying to find easy ways to export this data and package it into a file. I'm not constrained on what type of file it is (JSON, CSV, whatever), I just need to be able to export the contents into a standalone (and send-able) file. The extension is only run locally and the user would have access to all local files.

abraham
  • 46,583
  • 10
  • 100
  • 152
ZAR
  • 2,550
  • 4
  • 36
  • 66

2 Answers2

22

First, you need to get all data.
Then serialize the result.
Finally, offer it as a download to the user.

chrome.storage.local.get(null, function(items) { // null implies all items
    // Convert object to a string.
    var result = JSON.stringify(items);

    // Save as file
    var url = 'data:application/json;base64,' + btoa(result);
    chrome.downloads.download({
        url: url,
        filename: 'filename_of_exported_file.json'
    });
});

To use the chrome.downloads.download method, you need to declare the "downloads" permission in addition to the storage permission in the manifest file.

Rob W
  • 341,306
  • 83
  • 791
  • 678
0

You should look here: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-extensions/AzO_taH2b7U

It shows exporting chrome local storage to JSON.

Hope it helps

unit998x
  • 56
  • 4
  • 1
    That is not [`chrome.storage`](https://developer.chrome.com/extensions/storage), but `localStorage`. – Rob W Apr 19 '14 at 08:22
  • @unit998x, thanks for the response. I've seen this post before and it works fine to display the contents in JSON format. But this doesn't prompt the user to download the output. I've heard someone recommend to then using HTML5's file handling, but it would be easier if there is a chrome API to handle this (as it is already stored in chrome.storage). Thanks for the help! – ZAR Apr 20 '14 at 22:39