
今回は12,001-24,000語レベルの難単語を扱った「極限の英単語」。
この「極限の英単語」を高速でAnki用CSV変換する方法を解説します。
ちなみに「極限の英単語」は次の書籍です。
対象書籍

Amazon

Amazon

Amazon

Amazon
これらの単語をAnkiにして覚えたいって人は多いのではないでしょうか。
そのためにはCSVファイルを作成することになると思います。
これをKindleを見て、手入力でスプレッドシートに打ち込む…という作業をすると何十時間もかかるでしょう。
それを今回はGAS(Google Apps Script)というGoogleスプレッドシートにあるプログラムを使用することにより1冊1時間でCSVが作成できるようになります。
それでは「『極限の英単語』を高速でCSV変換する方法を解説します!」と題して始めます。
なお、24,001-34,847語レベルの難単語を扱った「終極の英単語」をCSVに変換する方法も別記事で解説していますので興味がある方はご覧ください。
この記事です
他のツールの記事です
「極限の英単語」を高速でAnki用CSV変換する方法(免責事項)

免責事項は次になります。
このページ掲載されている方法は正確性について万全を期していますが、当ブログの管理人はこのページの情報を用いて行う一切の結果について、何らの責任を負うものではありません。当ページの情報に起因して利用者に生じた損害につき、当ブログの管理人は責任を負いかねますので了承ください。
「極限の英単語」を高速でAnki用CSV変換する方法(必要なもの)

CSV変換するにあたり、次のものが必要になります。
iPad推奨(もしくはKindle対応のスマホorタブレット)
PC(Win、Mac問いません)環境
PCのメモ帳(検索/置換機能有りにしてください)
Googleのメインアカウント(※メインアカウントでないとGAS(プログラム)の実行ができません)
インターネット接続環境
「極限の英単語」を高速でAnki用CSV変換する方法(実行)

GASの機能の関係上、1,000語ずつ処理することを推奨します(単語数が多くなると、単語の処理が途中で終わる可能性が高くなります)。
1,000語処理する度に次のステップ1-5を実行します。
2,000語処理するにはステップ1-5を2回実行する必要がありますし、3,000語なら3回になります。
ステップ1 タブレットでの処理
・Kindleで単語等の情報をハイライトする。
・ハイライトした部分でフラッシュカードを作る
・フラッシュカードを編集し、全文をコピーする。
・コピーしたテキストをGmailで自分自身の宛先に送信する。
ステップ2 メールとメモ帳で処理する
・Gmailで自分自身に送信たメールを受信する
・受信した本文をメモ帳に貼り付ける
・空白文字がたくさんあるのでメモ帳の置換機能で空白文字を消す
ステップ3 GAS実行前に下処理をする
・プログラムでの処理を成功させるために、メモ帳の内容を下処理する
ステップ4 GASを実行する
・メモ帳の内容をGoogleスプレッドシートのA1セルに貼る
・GASを実行する
GASの実行が成功すると次の動画のように処理されます。
ステップ5 GAS実行後に手動で修正する
・GASで処理できなかった内容を手動で修正する
ステップ1・タブレットで処理する

まずはタブレットでKindleを起動。
「極限の英単語」を開きます。

1,000語単位の単語ページを開きます。

1,000語単位の始まりから、1,000語単位の終わりまでドラッグします。

1,000語単位の終わりまでドラッグします。
すると、どの色でハイライトするか聞かれるので好きな色をタップします(下図だと赤色です)。

ドラッグした部分がハイライトされました。
画面の空きスペースをタップします。

そうすると画面上部にメニューが出現します。
画面右上、右から3番目のアイコン(マイノート)をタッチします。

マイノートの画面になります。
画面右上、右から2番目のアイコン(エクスポート)をタップします。

エクスポートする場所を聞かれるので「フラッシュカード」をタップします。

フラッシュカードのデッキ名を名付けるよう聞かれます。
分かりやすい名前にしましょう。

名前を付けたら「保存」をタップします。

デッキ画面が開きます。
『デッキの編集」をタップします。

フラッシュカードをタップします。

フラッシュカードを編集できるようになりました。

iPad(もしくはiPhone)の場合、編集画面を長押しして離すとメニューがポップします。
「すべてを選択」をタップします。

続けてメニューがポップされるので「コピー」をタップします。

コピーした内容をGmailに貼り付け、自分自身のアカウントに送信します。

ステップ2・メールとメモ帳で処理する

ステップ1の最後で送信したGmailの内容を受信し、PCのメモ帳にペーストします。

半角スペースがたくさん混じっているので、置換メニューで半角スペースを削除します。

半角スペースを削除しました。

ステップ3・GAS実行前に下処理をする

タイトルどおりですが、今のメモ帳の内容。
GASでうまく実行するためにメモ帳の内容を下処理する必要があります。
その理由はGASでは正規表現に基づいた処理をするのですが、正規表現では対応しにくい部分を対処するためです。
12,001〜24,000語レベルで下処理の内容が異なるので次の表を参考の上、下処理をしてください。
単語レベル | 下処理対象単語 | 下処理内容 |
---|---|---|
12,001〜13,000語レベル | 特になし | - |
13,001〜14,000語レベル | feral | (修正前)発音部分 férə)rəl ↓ (修正後)発音部分 fér(ə)rəl 発音部分が半角括弧で括れていないので括る |
14,001〜15,000語レベル | mind-boggling | (修正前)発音部分 maɪndˌbɒɡ.(ə.)lɪŋ ↓ (修正後)発音部分 maɪndˌbɒɡ.(ə)lɪŋ 本記事のGASでは半角括弧の中は1文字を想定しているので "."を削除する |
15,001〜16,000語レベル | absenteeism | (修正前)単語部分と発音部分 absenteeism(仕事・学校などの)常習的欠席,欠勤;長期欠席 ↓ (修正後)単語部分と発音部分 absenteeism/(仕事・学校などの)常習的欠席,欠勤;長期欠席 単語部分と発音部分を半角のスラッシュ"/"で区切る |
〃 | kingpin | (修正前)発音部分 ''kɪŋ.pɪn ↓ (修正後)発音部分 kɪŋ.pɪn 本記事のGASでは処理できないので"''"を削除する |
〃 | theta | (修正前)意味部分 半角のシータ:θ ↓ (修正後)意味部分 全角のシータ:Θ 本記事のGASでは意味部分のθを発音記号と勘違して 処理してエラーになるので、 ギリシャ文字のシータは全角のシータにする |
〃 | vs. | (修正前)意味部分 =versus ↓ (修正後)意味部分 (=versus) 半角のイコールをそのままセルに書き出しすると 関数エラーになるので、前後を全角文字で括る |
〃 | (修正前)意味部分 =crossing ↓ (修正後)意味部分 (=crossing) 半角のイコールをそのままセルに書き出しすると 関数エラーになるので、前後を全角文字で括る |
|
〃 | hairpin | (修正前)意味部分 ヘアピン/U字型の ↓ (修正後)意味部分 ヘアピン/U字型の 半角のUを全角のUにする |
16,001〜17,000語レベル | fluorescence | (修正前)発音部分 flɔːr)résns ↓ (修正後)発音部分 flɔː(r)résns 発音部分が半角括弧で括れていないので括る |
17,001〜18,000語レベル | abductor | (修正前)単語部分と発音部分 abductor誘拐者,誘拐犯(人) ↓ (修正後)単語部分と発音部分 abductor/誘拐者,誘拐犯(人) 単語部分と発音部分を半角のスラッシュ"/"で区切る |
18,001〜19,000語レベル | oi | (修正前)発音部分 —ɔɪ ↓ (修正後)発音部分 ɔɪl 発音部分の長棒を削除する 本記事のGASでは処理できないため |
〃 | nth | (修正前)意味部分 n番目の/《数学》n次の/《話》(繰り返された中で)最新の/不特定多数の ↓ (修正後)意味部分 n番目の/《数学》n次の/《話》(繰り返された中で)最新の/不特定多数の 半角のnを全角のnにする |
19001〜20,000語レベル | largess(e) | (修正前)単語部分 largess(e) ↓ (修正前)単語部分 largess 単語部分の半角括弧は本記事のGASでは処理できないため |
20001〜21,000語レベル | divers | (修正前)発音部分 ''daɪvəz ↓ (修正後)発音部分 daɪvəz 本記事のGASでは処理できないので"''"を削除する |
〃 | dysplasia | (修正前)発音部分 dɪs.pleɪ''.ʒʌ ↓ (修正後)発音部分 dɪs.pleɪ.ʒʌ 本記事のGASでは処理できないので"''"を削除する |
〃 | gees | (修正前)意味部分 gooseの複数形 ↓ (修正前)意味部分 gooseの複数形 意味部分の最初に半角英数があるとGAS実行でエラーになるので gooseを全角にする |
〃 | outsell | (修正前)発音部分 ɑʊt''sɛl ↓ (修正後)発音部分 ɑʊtsɛl 本記事のGASでは処理できないので"''"を削除する |
〃 | twill | (修正前)発音部分 (弱形)twəl;(強形)twíl ↓ (修正後)発音部分 twəl 本記事のGASでは処理できないので全角文字とセミコロン";"を削除する |
21,001〜22,000語レベル | stigmata | (修正前)意味部分 stigmaの複数形 ↓ (修正後)意味部分 stigmaの複数形 意味部分の最初に半角英数があるとGAS実行でエラーになるので stigmaを全角にする |
22,001〜23,000語レベル | admin | (修正前)意味部分 《略語》《話》administration/administrator ↓ (修正後) 《略語》《話》administration/administrator 本記事のGASでは処理できない内容なので administration/administrator を 全角にする |
〃 | T-bone | (修正前)意味部分 T字型の骨(付きステーキ) 意味を全角にする ↓ (修正後)意味部分 T字型の骨(付きステーキ) 意味部分の最初に半角英数があるとGAS実行でエラーになるので Tを全角にする |
23,001〜24,000語レベル | amidship(s) | (修正前)単語部分 amidship(s) ↓ (修正後)単語部分 asmidship 単語部分の半角括弧は本記事のGASでは処理できないため |
ステップ4・GASを実行する

Googleドライブを開きます。
Googleスプレッドシートを新規作成するために、「新規」ボタンをクリックします。

「Googleスプレッドシート」をクリックします。

Googleスプレッドシートを開きました。

スプレッドシート名を分かりやすいものにしてください(下図では、「英単語帳」)。
次の2つのシートを作成してください。
- 作業シート(下図では、「作業シート」。本シートをアクティブシートにしてGASを実行します。)
- 単語帳CSVシート(下図では、「極限の英単語VOL.1」。本記事の完成品はここにできます。)

メモ帳の内容を作業シートのA1セルに貼り付けてください。
次に、必ず作業シート(下図では「作業シート」)を選択した上で、ツールバーの「ツール」をクリックします。

「スクリプトエディタ」をクリックします。

なお、メインアカウント以外でログインした状態だと下図の画面になります。
もしこうなったら、すべてのアカウントからログアウトして、再度ログインしてください。

スクリプトエディタを開きました。

次のコードをコピーしてください。
function myFirstFunction() {
//1. 現在のスプレッドシートを取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//2. 現在のシートを取得
var sheet = spreadsheet.getActiveSheet();
//3. 指定するセルの範囲(A1)を取得
var range = sheet.getRange("A1");
//4. 値を取得する
var str = range.getValue().toString();
//5. 発音記号のカッコ書きの左カッコを★、右カッコを☆に置換する、下処理のため
var reg_one = /(\([ ̀ abcdefghijklmnoprstuvwzɘàáæèéέìíðòóùúÚŋǽɑˡɒ·ᾶʀıˑṃṇÍḷɫɔəɚɛɜɝᴐѲɡɪɹʃʊʌʒά~θṭὰʤɻʰːjlɲʉɨɐœʦɵʧ]\))/gi
var rep_one = "★$1☆";
var str_one = str.replace(reg_one,rep_one).replace(/★\(/gi,"★").replace(/\)☆/gi,"☆");
//6. 英単語もしくは発音記号の冒頭■付け
var reg_two = /([ ̀ a-zA-Z★☆\.`ɘà~áæèéέìíðòóùúÚŋǽɑˡɒ·ᾶʀıˑṃṇÍḷɫɔəɚɛɜɝᴐѲɡɪɹʃʊʌɨɐʦœʉʒˈˌː̩̀́άθṭὰʤɻʰː‐\-ɲɵʧŏă]{2,}\/)/g
var rep_two = "■$1";
var str_two = str_one.replace(reg_two,rep_two).toString();
//7. スラッシュをデリミタとして配列格納
var reg_three = /\//g
var arr_three = str_two.split(reg_three);
//8. 配列に発音記号が含まれるなら■を□に置換
for(var i in arr_three){
if(arr_three[i].toString().match(/[★☆`àáæèéìíðòóùúŋǽɑˡɒɔəɚɛɜɝɡɪɹʃʊʌʒˈˌː̩̀́άθṭὰɪɻʰːʧŏă]/)){
arr_three[i] = arr_three[i].toString().replace("■","□");
}
}
//9. 意味の部分が「(文字)■(文字)」になっているので適切に処理
var arr_four = [];
var k = 0;
for(var j in arr_three){
if(arr_three[j].toString().match(/^■.+/) || arr_three[j].toString().match(/^□.+/)){
arr_four[k] = arr_three[j];
Logger.log("arr is " + arr_four[k]);
}else if(arr_three[j].toString().indexOf('■') == -1 && arr_three[j].toString().indexOf('□') == -1){
arr_four[k] = arr_three[j];
Logger.log("arr is " + arr_four[k]);
}else{
arr_four[k] = arr_three[j].toString().match(/^[^■]+/).toString();
Logger.log("arr is " + arr_four[k]);
k++;
arr_four[k] = arr_three[j].toString().match(/■[^■]+$/).toString();
Logger.log("arr is " + arr_four[k]);
}
k++;
}
//10. 発音記号なしの英単語を処理する
var arr_five = [];
var q = 0;
for(var p in arr_four){
if(arr_four[p].toString().match(/^■.+/) || arr_four[p].toString().match(/^□.+/)){
arr_five[q] = arr_four[p];
q++;
}else{
arr_five[q] = arr_four[p].toString().match(/^[^a-zA-Z'\-]+/);
q++;
if(arr_four[p].toString().match(/([a-zA-Z'\-]+[^a-zA-Z'\-]+)/) != null){
var jumbled = arr_four[p].toString().match(/([a-zA-Z'\-]+[^a-zA-Z'\-]+)/gi);
for(var r in jumbled){
arr_five[q] = "■" + jumbled[r].toString().match(/[a-zA-Z'\-]+/);
q++;
arr_five[q] = jumbled[r].toString().match(/[^a-zA-Z'\-]+/);
q++;
}
}
}
}
//11. GSSの2行目以下に書き込み
var row = 2;
var tmp = 0;
for(var m in arr_five){
Logger.log("arr_five[m] is " + arr_five[m]);
if(arr_five[m].toString().match(/■/)){
//単語の場合■を除去、1列目書き込み
sheet.getRange(row,1).setValue(arr_five[m].replace("■","").toString());
}else if(arr_five[m].toString().match(/□/)){
//発音記号の場合□を除去、★を(、☆を)に置換、2列目に書き込み
sheet.getRange(row,2).setValue(arr_five[m].replace("□","").replace("★","(").replace("☆",")").toString());
}else{
sheet.getRange(row,3).setValue(sheet.getRange(row,3).getValue() + arr_five[m].toString());
tmp = Number(m) + 1;
if(arr_five[Number(tmp)] != null && arr_five[Number(tmp)].toString().match(/■/)){
row++;
}
}
}
}
上書きして貼り付けます。
次の部分も上書きして貼り付けてください。
function myFunction(){
}

「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。
画面上部にある「実行」をクリックしてください。

GASの実行が初回だと次のようなダイアログが表示されます。
「権限を確認」をクリックしてください。

Googleのメインアカウントをクリックします。

警告ダイアログが出るので「詳細」をクリックします。

「(作成したGASのプロジェクト名)(安全ではないページ)に移動」(下図では「無題のプロジェクト(安全ではないページ)に移動」)をクリックします。

GASのプロジェクトにアクセスリクエストを許可します。
「許可」をクリックしてください。

GASを実行すると実行ログが画面下部に出力されます。

作業シートの2行目以降に処理内容が上書きされます。(作業シートの2行目以降に何も入力しないでください。たとえ大事な内容であっても上書きされます)

動画にすると次のようになります。
最後まで無事GASが実行されると実行ログに「お知らせ 実行完了」と表示されます。

実行ログに「お知らせ 実行完了」と表示されているならば、作業シートの方も単語が最後まで処理されています。

「ステップ5・GAS実行後に手動で修正する」に進んでください。
GASを実行したが「関数の実行がタイムアウトしました。…」と実行ログに表示された場合
GASの実行可能時間は6分間のようです。
もし実行して6分経過した場合、下図のように「関数の実行がタイムアウトしました。デバッグを実行するには、デバッガを再起動してください。デバッガを再起動」と表示されます。

その場合、作業シートの方も処理が途中で終わった結果となります。

そうなった場合は、作業シートの、2行目〜単語の意味まで処理ができた行、をコピーします。
上図で言えば2行目〜917行目になります。

コピーした内容を単語帳CSVシート(下図では、「極限の英単語VOL.1」シート)に貼り付けます。

メモ帳の内容を再度作業シートのA1セルに貼り付けてください。
ただし、貼り付ける内容はGAS実行で処理できなかった部分です(下図ではsinfulの単語以降)。

もし貼り付けた内容で、最初の単語が「単語、意味」の構成になっていたら(発音の掲載がない)次の対応をしてください(下図だとrelativism)。

単語と意味を半角のスラッシュ”/”で区切ってください。

再度、スクリプトエディタの「実行」をクリックしてください。

ステップ5・GAS実行後に手動で修正する

無事GASを実行して処理が済めば、作業シートの2行目以降に全単語の「単語、発音、意味」が列ごとに分かれた結果が書き込みされます。
これをコピーして単語帳CSVシート(下図では「極限の英単語VOL.1」シート)に貼ります。

ただし、下図のacneのように意味部分に”(半角英数の単語)”があると、行が分断されているものがあるので手動で直していきます。

下図のように直してください。

ステップ6・CSVエクスポート

スプレッドシート画面上部のメニューから、「ファイル」→「ダウンロード」→「カンマ区切りの値」でCSVファイルとしてエクスポートできます。
Anki用にお役立てください。
まとめ

12,000語以上の単語をAnkiで覚えたいけど、「手作業は嫌!」という人はぜひご活用ください。
今回のGASプログラムは正規表現処理を活用したものですが、もし正規表現とプログラムを理解されたのであればKindleの単語帳の多くはCSV変換処理できるのではないかと考えます。
そうすれば好きな単語帳を効率的にAnkiに取り込みやすくなりますね。
今回は「極限の英単語」というCEFR-C1レベル以上の方向けの単語帳のCSV処理方法となりましたが、今後は諸中級者向け「究極の英単語」のCSV処理方法を掲載したいと思います。
それではAnkiライフを楽しみましょう。

メール相談受付中
ブログに対するご意見、
英語の勉強法についての相談、
気軽にしていただけたらと思います。
管理人のキャパシティーが超えない範囲で対応させていただきますね♪
(↓ メール相談は↓をクリック! ↓)
