google-chrome-extensionlocal-storage

Chrome Extension: Local Storage, how to export


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.


Solution

  • 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.