Googleでいくつかの検索エントリを作成しましたChrome「検索エンジンの編集」を使用しています。
これらのエントリのいくつかを同僚と共有するにはどうすればよいですか?
外部ツールを使用したり、レジストリを編集したりせずに、Chrome検索エンジン設定をエクスポートおよびインポートするための簡単なソリューションを次に示します。
chrome://settings/searchEngines
))で検索エンジンの設定ページを開きます。検索エンジン設定を含むJSONファイルをダウンロードするには:
(function exportSEs() {
/* Auxiliary function to download a file with the exported data */
function downloadData(filename, data) {
const file = new File([data], { type: 'text/json' });
const elem = document.createElement('a');
elem.href = URL.createObjectURL(file);
elem.download = filename;
elem.click();
}
/* Actual search engine export magic */
settings.SearchEnginesBrowserProxyImpl.prototype.getSearchEnginesList()
.then((searchEngines) => {
downloadData('search_engines.json', JSON.stringify(searchEngines.others));
});
}());
上記のスクリプトを使用して作成されたJSONファイルから設定をインポートするには:
(async function importSEs() {
/* Auxiliary function to open a file selection dialog */
function selectFileToRead() {
return new Promise((resolve) => {
const input = document.createElement('input');
input.setAttribute('type', 'file');
input.addEventListener('change', (e) => {
resolve(e.target.files[0]);
}, false);
input.click();
});
}
/* Auxiliary function to read data from a file */
function readFile(file) {
return new Promise((resolve) => {
const reader = new FileReader();
reader.addEventListener('load', (e) => {
resolve(e.target.result);
});
reader.readAsText(file);
});
}
const file = await selectFileToRead();
const content = await readFile(file);
const searchEngines = JSON.parse(content);
searchEngines.forEach(({ name, keyword, url }) => {
/* Actual search engine import magic */
chrome.send('searchEngineEditStarted', [-1]);
chrome.send('searchEngineEditCompleted', [name, keyword, url]);
});
}());
メモ
chrome://
のURLでは実行されません(そこで実行されます)。Linuxでchrome検索エンジンをCSVとしてエクスポートする単一のコマンドを次に示します。
sqlite3 -csv ~/.config/chromium/Default/Web\ Data 'select short_name,keyword,url from keywords' > ~/search-engines.csv
Sqlite3をインストールする必要があります。 Windowsを使用している場合は、~/.config/chrome
を対応するWindowsパスに置き換えます。 %AppData%\Local\Google\Chrome\User Data
のようになります
CSVにエクスポートする代わりに、sqlite挿入ステートメントにエクスポートできます。
(printf 'begin transaction;\n'; sqlite3 ~/.config/chromium/Default/Web\ Data 'select short_name,keyword,url,favicon_url from keywords' | awk -F\| '{ printf "insert into keywords (short_name, keyword, url, favicon_url) values ('"'"%s"'"', '"'"%s"'"', '"'"%s"'"', '"'"%s"'"');\n", $1, $2, $3, $4 }'; printf 'end transaction;\n') > ~/search-engine-export.sql
次に、~/search-engine-export.sql
を他のマシンにコピーし、次のコマンドでインポートします。
sqlite3 ~/.config/chromium/Default/Web\ Data < search-engine-export.sql
上記のように、Web Data
パスをマシン上のパスに置き換えてください。
それは可能ですが、あなたがしたくないほどの痛みで十分です。
Chrome=プロファイルでWebデータファイルを見つけます。Windows7では、ここにあります:"%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\Web Data"
Ubuntuで SQLite Studio またはsqlite(Sudo apt-get install sqlite)などのSQLiteプログラムでファイルを開き、SQLite Studioでキーワードテーブルをエクスポートするか、Linuxで次のコマンドを実行します:sqlite3 "Web Data" ".dump keywords" > keywords.sql
このプロセスの逆を行って、同僚にキーワードをインポートしてもらいます。
私が言ったように、可能ですが苦痛です。
SQLをWebデータからほぼ普遍的な Netscapeブックマークファイル形式 HTMLに変換するJavaScriptパーサーを作成しました(その形式の決定的な標準はMicrosoftであるように見える皮肉なことです)。 FirefoxやOperaなどの他のブラウザへのキーワード。
別のソリューションに興味がある場合は、 Shortmarks を作成して、任意のブラウザーで同じカスタム検索エンジンのセットを使用できるようにしました。他のユーザーと共有する機能をすぐに実装する予定です。数日後のリリースには、新機能のテストが完了するとすぐに、前述のインポートコードが含まれます。
私は自分のGoogle Chrome=検索エンジンエントリを共有するために以下を実行しました、そしてそれは私にとって完全にうまくいきました:
WINDOWS XP:C:\ Documents and Settings\MyUserName\Local Settings\Application Data\Google\Chrome\User Data\Defaultに移動します
ON WINDOWS 7:C:\ Users\MyUserName\AppData\Local\Google\Chrome\User Data\Defaultに移動します
次の3つのファイルをコピーします:Preferences
、Web Data
およびWeb Data-journal
これら3つのファイルをターゲットマシンに配置します
私はWindows 10を使用しており、検索エンジンを個人のchromeプロファイルから会社のchromeプロファイルにコピーしました。次のようにしました。
SQLiteを https://www.sqlite.org/download.html からダウンロードしました(「プリコンパイル済みバイナリ」の下に、「SQLiteデータベースファイルを管理するためのコマンドラインツールのバンドル」という説明があります)。パスに既に含まれているc:\utils
に解凍しました
Cmd.exeを開いた
ディレクトリをデフォルト(個人用)に変更しましたchromeプロファイル
cd "%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default"
Chrome)を完全に終了しました(トレイ内にもあります)。また、これらの指示を失う可能性があるため、これらの指示のコピーを保管してください(または別のブラウザで開いてください)。
私は以下を実行しました:
sqlite3 "Web Data" ".dump keywords" > c:\keywords.sql
私は新しいプロファイルに変更しました:
cd "..\Profile 2\"
私はこれを実行しました:
sqlite3.exe "Web Data" < c:\keywords.sql
次のエラーが発生しましたが、問題ありません。
Error: near line 4: UNIQUE constraint failed: keywords.id Error: near line 5: UNIQUE constraint failed: keywords.id Error: near line 6: UNIQUE constraint failed: keywords.id Error: near line 7: UNIQUE constraint failed: keywords.id Error: near line 8: UNIQUE constraint failed: keywords.id
エラーがさらに発生する場合は、新しいプロファイルに検索エンジンを追加したことを意味します。追加したばかりの新しいものを含め、すべて削除して、このステップを再実行します。または、SQLファイルを手動で編集します。
JSONデータから定義をロードするpythonスクリプトを記述しました。これで、構成をコードとして管理できます。
https://Gist.github.com/ninowalker/9952bf435f8acffa3ef59d6c538ca165
これはべき等です(たとえば、複数回実行できます。キーワードによって重複を追加しません)。
Python2とOSXで動作します。他のプラットフォームをサポートするように変更できます。
これが私のやり方です(どこで見つけたか覚えていません)。
スクリプトを作成するexport_chrome_search_engines.sh
:
#!/bin/sh
DESTINATION=${1:-./keywords.sql}
TEMP_SQL_SCRIPT=/tmp/sync_chrome_sql_script
echo "Exporting Chrome keywords to $DESTINATION..."
cd ~/.config/google-chrome/Default
echo .output $DESTINATION > $TEMP_SQL_SCRIPT
echo .dump keywords >> $TEMP_SQL_SCRIPT
sqlite3 -init $TEMP_SQL_SCRIPT Web\ Data .exit
rm $TEMP_SQL_SCRIPT
スクリプトを作成するimport_chrome_search_engines.sh
:
#!/bin/sh
if ps -x | grep -v grep | grep Google\ Chrome > /dev/null; then
echo "Close Chrome and try again..."
exit 1
fi
SOURCE=${1:-./keywords.sql}
#SOURCE=$1
TEMP_SQL_SCRIPT=/tmp/sync_chrome_sql_script
echo
echo "Importing Chrome keywords from $SOURCE..."
cd ~/.config/google-chrome/Default
echo DROP TABLE IF EXISTS keywords\; > $TEMP_SQL_SCRIPT
echo .read $SOURCE >> $TEMP_SQL_SCRIPT
sqlite3 -init $TEMP_SQL_SCRIPT Web\ Data .exit
rm $TEMP_SQL_SCRIPT
それらを実行可能にします。
chmod +x export_chrome_search_engines.sh import_chrome_search_engines.sh
エクスポートするには、Chrome=をシャットダウンして実行します。
./export_chrome_search_engines.sh
cp ~/.config/google-chrome/Default/keywords.sql /tmp/
インポートするには、Chrome=をシャットダウンして実行します。
cp /tmp/keywords.sql ~/.config/google-chrome/Default
./import_chrome_search_engines.sh