1. はじめ

Google Chrome 拡張機能は、ユーザーエクスペリエンスを向上させるために様々な機能を提供しています。本記事では、タブに関連する情報を取得したり、タブのプロパティを更新したりするための主要な API メソッドである chrome.tabs.querychrome.tabs.update に焦点を当てます。

2. chrome.tabs.query メソッド

chrome.tabs.query メソッドは、Chrome 拡張機能内でタブに関する情報を取得するための重要な API メソッドの一つです。このメソッドは、指定された条件に一致するタブを取得し、それに基づいて処理を行います。chrome.tabs.query メソッドの基本的な使い方は以下の通りです。

// 構文
chrome.tabs.query(queryInfo, callback);
  • queryInfo: タブを取得する条件を指定するオブジェクト。
    • active: タブがアクティブかどうかを指定します。true ならアクティブなタブのみを取得します。
    • audible: タブが音声を再生しているかどうかを指定します。true なら音声を再生しているタブのみ
    • autoDiscardable: タブが自動的に破棄されるかどうかを指定します。true なら自動的に破棄されるタブのみ
    • currentWindow: 現在のウィンドウ内のタブのみを対象にするかどうかを指定します。
    • discarded: タブが破棄されているかどうかを指定します。true なら破棄されたタブのみ
    • groupId : タブが属するグループの ID を指定します。
    • highlighted : タブがハイライトされているかどうかを指定します。true ならハイライトされたタブのみ
    • index: タブのインデックスを指定します。
    • muted: タブがミュートされているかどうかを指定します。true ならミュートされたタブのみ
    • pinned: タブがピン留めされているかどうかを指定します。true ならピン留めされたタブのみ
    • status: タブの読み込み状態に基づいて取得します(“loading”、“complete” など)。
    • title: タブのタイトルに一致するタブを取得します。
    • url: 特定の URL に一致するタブを取得します。
    • windowId: タブが存在するウィンドウの ID を指定します。
    • windowType: タブが属するウィンドウの種類を指定します。
  • callback: クエリが完了した後に呼び出されるコールバック関数。
chrome.tabs.query({ currentWindow: true }, function (tabs) {
  console.log(tabs);
});

上記の例では、currentWindow: true を指定してアクティブなウィンドウ内のすべてのタブを取得しています。
tabs には取得したタブが配列として格納され、それに対して必要な操作を行うことができます。

3. chrome.tabs.update メソッド

chrome.tabs.update メソッドは、指定されたタブのプロパティを更新するための Chrome 拡張機能の API メソッドです。このメソッドを使用することで、タブの URL やピン留めの状態、ミュート状態などを変更することが可能です。
chrome.tabs.update メソッドの基本的な使い方以下の通りです。

chrome.tabs.update(tabId, updateProperties, callback);
  • tabId: 更新したいタブの ID。(オプション)
  • updateProperties: 更新するプロパティを指定するオブジェクト。
    • active: タブをアクティブにするかどうかを指定します。
    • autoDiscardable: タブが自動的に破棄されるかどうかを指定します。
    • highlighted: タブをハイライトするかどうかを指定します。
    • muted: タブをミュートするかどうかを指定します。
    • openerTabId: タブを開いたタブの ID を指定します。
    • pinned: タブをピン留めするかどうかを指定します。
    • selected: タブを選択するかどうかを指定します。
    • url: タブの新しい URL を指定します。
  • callback: 更新が完了した後に呼び出されるコールバック関数。
// アクティブなウィンドウ内のすべてのタブをミュートにする例
chrome.tabs.query({ currentWindow: true }, function (tabs) {
  tabs.forEach(function (tab) {
    chrome.tabs.update(tab.id, { muted: true });
  });
});

上記例では、アクティブなウィンドウ内のすべてのタブをミュートに変更しています。chrome.tabs.query でアクティブなウィンドウ内のタブを取得し、chrome.tabs.update で各タブのミュート状態を変更しています。

4. 参照