🐷

Chrome拡張でのstorageの挙動

2024/12/15に公開

登録可能な仕組みがよくわからないところがありましたので、まとめてみました。
Manifest V3で確認しています。
2024/12/15での動作です。

設定

次のような内容が設定できます。

    (async () => {
        const dataTable = { textValue: 'abcd', intValue: 1234 };
        const optionTable = { userName: 'name', age: 30 };
        const keyList = ['one' , 'two', 'three'];
        const numList = [1 , 2, 3];

        await chrome.storage.local.set({dataTable, optionTable, keyList, numList});
        console.log("set!");
    })();

取得

以下のコードで取得できます。

    (async () => {
        const dataTable = await chrome.storage.local.get('dataTable');
        const optionTable = await chrome.storage.local.get('optionTable');
        const keyList = await chrome.storage.local.get('keyList');
        const numList = await chrome.storage.local.get('numList');
        console.log("get!", dataTable, optionTable, keyList, numList);
    })();

取得結果

上書き

一部の値を上書きすることができます。

        await chrome.storage.local.set({dataTable:null});
        console.log("clear!");

取得結果(dataTableのみが上書きされている)

辞書の登録と取得

次のような辞書も値として登録できます。

    (async () => {
        const keyToDict = {
            '2001' : {
                title: 'タイトル1',
                count: 5,
                star: 10
            },
            '2025' : {
                title: 'タイトル2',
                count: 40,
                star: 50
            },
            '203' : {
                title: 'タイトル3',
                count: 80,
                star: 23
            },
        };
        await chrome.storage.local.set({keyToDict});
        console.log("set keyToDict!");
    })();

取得コード

    (async () => {
        const keyToDict = await chrome.storage.local.get('keyToDict');
        console.log("get keyToDict!", keyToDict);
    })();

結果

Discussion