はじめに
ブックマーク関連のChrome拡張機能開発において
「ブックマーク」ではなく「フォルダ」を取得する方法について
必要な権限
manifest.json
に以下の記述が必要です。
"permissions": ["bookmarks"]
ブックマークの「フォルダ」の仕組み
URL が NULL または指定されていない場合は、フォルダになります。
「ブックマークとは、特定のページのURLを保存する機能」である
=「URLがなければ、ブックマークではない何か」である
=「それをフォルダとする」
このような仕組みのようです。
フォルダとブックマークを同じテーブルとして管理できる、効率の良い仕組みですね。
「フォルダ(親)」の取得方法
const parent = chrome.bookmarks.get(id) //idにフォルダ(親)のidを入れる
これで取得可能です。
フォルダ名を取得したいときは
// 先程の続き
parent[0].title
で取得可能
その他のプロパティはこちら
「フォルダ」のidを取得したい時
特定のブックマークの親(フォルダ)を取得したい時には
まずブックマークを取得し、
そのブックマークから所属する親フォルダidを取得します。
chrome.bookmarks.search(query, function(bookmarks) {
bookmarks.forEach(async function(bookmark) {
const parent = await chrome.bookmarks.get(bookmark.parentId);
console.log(parent[0].title + ' / ' + bookmark.title)
// フォルダ / ブックマーク名 というログになる
})
})
async / await
は chrome.bookmarks.get
がプロミスを返すため使用しています。
関連記事:ポップアップの検証(開発者ツール)
console.log()
の確認方法はこちら
おわりに
以上、ブックマークの「フォルダ」についてでした。
次は何を書こうかしら・・・