「終極の英単語」を高速でCSV変換する方法を解説します!

shukyoku-convert 上級者向け
今回の記事は上級者以上向け(CEFR-C1以上)になります!
リン先生
こんにちは!英語上級者になりたい方のサポート役、リンです♪

今回は24,001-34,847語レベルの難単語を扱った「終極の英単語」。


この「終極の英単語」を高速でCSV変換する方法を解説します。


ちなみに「終極の英単語」は次の書籍です。


対象書籍

書籍1
sla-gaikokugo-gakushu-no-kagaku
終極の英単語 Vol.1 28000語レベル Kindle版 / なりしか
Amazon
書籍2
sla-gaikokugo-gakushu-no-kagaku
終極の英単語 Vol.2 30000語レベル Kindle版 / なりしか
Amazon
書籍3
sla-gaikokugo-gakushu-no-kagaku
終極の英単語 Vol.3 32000語レベル Kindle版 / なりしか
Amazon
書籍4
sla-gaikokugo-gakushu-no-kagaku
終極の英単語 Vol.4 35000語レベル Kindle版 / なりしか
Amazon
書籍5
sla-gaikokugo-gakushu-no-kagaku
終極の英単語 Vol.0 一般常識レベル Kindle版 / なりしか
Amazon

これらの単語をAnkiにして覚えたいって人は多いのではないでしょうか。


そのためにはCSVファイルを作成することになると思います。


これをKindleを見て、手入力でスプレッドシートに打ち込む…という作業をすると何十時間もかかるでしょう。


それを今回はGAS(Google Apps Script)というGoogleスプレッドシートにあるプログラムを使用することにより1冊1時間でCSVが作成できるようになります。


それでは「『終極の英単語』を高速でCSV変換する方法を解説します!」と題して始めます。


なお、12,001-24,000語レベルの難単語を扱った「極限の英単語」をCSVに変換する方法も別記事で解説していますので興味がある方はご覧ください。


この記事です!

kyokugen-convert

「極限の英単語」を高速でCSV変換する方法を解説します!



「終極の英単語」を高速でCSV変換する方法(免責事項)

リン先生
「終極の英単語」を高速でCSV変換する方法(免責事項)について話します。

免責事項は次になります。

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


終極の英単語」を高速でCSV変換する方法(必要なもの)

リン先生
「終極の英単語」を高速でCSV変換する方法(必要なもの)について話します。

CSV変換するにあたり、次のものが必要になります。

 iPad推奨(もしくはKindle対応のスマホorタブレット)
 PC(Win、Mac問いません)環境
 PCのメモ帳(検索/置換機能有りにしてください)
 Googleのメインアカウント(※メインアカウントでないとGAS(プログラム)の実行ができません)
 インターネット接続環境


「終極の英単語」を高速でCSV変換する方法(実行)

リン先生
「終極の英単語」を高速で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・タブレットで処理する

リン先生
ステップ1・タブレットで処理する を開始します。



まずはタブレットでKindleを起動。


「終極の英単語」を開きます。

shukyoku-vol1-top

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

shukyoku002

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

shukyoku003

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


すると、どの色でハイライトするか聞かれるので好きな色をタップします(下図だと赤色です)。

shukyoku004

ドラッグした部分がハイライトされました。


画面の空きスペースをタップします。

shukyoku005

そうすると画面上部にメニューが出現します。


画面右上、右から3番目のアイコン(マイノート)をタッチします。

shukyoku006

マイノートの画面になります。


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

shukyoku007

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

shukyoku008

フラッシュカードのデッキ名を名付けるよう聞かれます。


分かりやすい名前にしましょう。

shukyoku009

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

shukyoku010

デッキ画面が開きます。


『デッキの編集」をタップします。

shukyoku011

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

shukyoku012

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

shukyoku013

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


「すべてを選択」をタップします。

shukyoku014

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

shukyoku015

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

shukyoku016


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

リン先生
ステップ2・メールとメモ帳で処理する を開始します。

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

shukyoku017

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

shukyoku018

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

shukyoku019


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

リン先生
ステップ3・GAS実行前に下処理をする を開始します。

タイトルどおりですが、今のメモ帳の内容。


GASでうまく実行するためにメモ帳の内容を下処理する必要があります。


その理由はGASでは正規表現に基づいた処理をするのですが、正規表現では対応しにくい部分を対処するためです。


24,001〜34,847語レベルで下処理の内容が異なるので次の表を参考の上、下処理をしてください。

単語レベル下処理対象単語下処理内容
26,001〜27,000語レベルabiotic(修正前)単語部分と発音部分
abiotic生命のない;非生物の

(修正後)単語部分と発音部分
abiotic/生命のない;非生物の


単語部分と発音部分を半角のスラッシュ"/"で区切る
bailiwick(修正前)意味部分 bailiffの管轄区域/得意な領域,なわばり

(修正後)意味部分 bailiffの管轄区域/得意な領域,なわばり

意味部分のbailiffを全角のbailiffにする

contretemps(修正前)意味部分
あいにくの事故[出来事];困った災難/口論,けんか,意見の衝突/《フェンシング》コントルタン(相手のカウンター攻撃に対処するあらゆる動作)/

(修正後)意味部分
あいにくの事故[出来事];困った災難/口論,けんか,意見の衝突/《フェンシング》コントルタン(相手のカウンター攻撃に対処するあらゆる動作)


意味部分の最後の半角のスラッシュ"/"を削除
27,001〜28,000語レベルentrain(修正前)意味部分
(兵士を[が])列車に乗せる[乗る]/いっしょに引っ張って行く,引きずる/熱意,活気/

(修正後)意味部分
(兵士を[が])列車に乗せる[乗る]/いっしょに引っ張って行く,引きずる/熱意,活気


意味部分の最後の半角スラッシュ"/"を削除
kiloton(修正前)意味部分
キロトン(1,000トン)/TNT1,000トンに相当する原水爆の爆破力の単位

(修正後)意味部分
キロトン(1,000トン)/TNT1,000トンに相当する原水爆の爆破力の単位


意味部分にあるTNTを全角のTNTにする
T-bar(修正前)意味部分
《建築》T字鋼[梁]/T字形スパナ[レンチ]/(スキー場の)T字形リフト/Tストラップ(足首を回るひもと甲の中央を走るひもがT字形を成す)

(修正後)意味部分
《建築》T字鋼[梁]/T字形スパナ[レンチ]/(スキー場の)T字形リフト/Tストラップ(足首を回るひもと甲の中央を走るひもがT字形を成す)


意味部分にあるTを全角のTにする
28,001〜29,000語レベル特になし-
29,001〜30,000語レベルf-ing(修正前)意味部分
《米俗》fuking

(修正後)意味部分
《米俗》fuking


意味部分にあるfukingを全角のfukingにする
30,001〜31,000語レベルthrombus(修正前)発音部分と意味部分
Ѳrámbəs《病理》血

(修正後)発音部分と意味部分
Ѳrámbəs/《病理》血


発音部分と意味部分を半角のスラッシュ"/"で区切る
capsular(修正前)意味部分
カプセル(状)の/カプセルに入った/

(修正後)意味部分
カプセル(状)の/カプセルに入った


意味部分の最後の半角スラッシュ"/"を削除
31,001〜32,000語レベルatrophic(修正前)発音部分と意味部分
ətráfɪk《病理》萎縮症の

(修正後)発音部分と意味部分
ətráfɪk/《病理》萎縮症の


発音部分と意味部分を半角のスラッシュ"/"で区切る
clevis(修正前)意味部分
Uリンク,U字鉤(両端にボルトが付いたU字形の金具)

(修正後)意味部分
Uリンク,U字鉤(両端にボルトが付いたU字形の金具)


意味部分にあるUを全角のUにする
nosocomial(修正前)意味部分
i《医学》(感染などが)院内で起きる,病院の,院内の

(修正後)意味部分
《医学》(感染などが)院内で起きる,病院の,院内の


意味部分の最初にあるiを削除する
prokaryote(修正前)発音部分と意味部分
proʊkǽɚrioʊt《生物》原核生物,前核生物(細菌類や藍藻類などの核膜を持たない単細胞生物)

(修正後)発音部分と意味部分
proʊkǽɚrioʊt/《生物》原核生物,前核生物(細菌類や藍藻類などの核膜を持たない単細胞生物)


発音部分と意味部分を半角のスラッシュ"/"で区切る
32,001〜33,000語レベルA-to-Z(修正前)意味部分
全部の,すべての/AからZで始まる単語を用いた

(修正後)意味部分
全部の,すべての/AからZで始まる単語を用いた


意味部分にあるAとZを全角のAとZにする
33,001〜34,000語レベルdysplastic(修正前)発音部分
dɪs.plæs''.tɪk

(修正後)発音部分
dɪs.plæs.tɪk


発音部分の''を削除する
plena(修正前)意味部分
《音楽》プレーナ(プエルトリコで19世紀の終わりから20世紀の始めにかけて生まれた音楽)/plenumの複数形

(修正後意味部分
《音楽》プレーナ(プエルトリコで19世紀の終わりから20世紀の始めにかけて生まれた音楽)/plenumの複数形


意味部分のplenumを全角のplenumにする
34,001〜34,847語レベルphysiographic(修正前)発音部分と意味部分
fìziəɡrǽfik自然地理学の,地形学の

(修正後)発音部分と意味部分
fìziəɡrǽfik/自然地理学の,地形学の


発音部分と意味部分を半角のスラッシュ"/"で区切る
pleura(修正前)意味部分
《解剖》胸膜,肋膜/pleuronの複数形(甲殻類などの側板)

(修正後)意味部分
《解剖》胸膜,肋膜/pleuronの複数形(甲殻類などの側板)


意味部分のpleuronを全角のpleuron
tilde(修正前)意味部分
《言語》ティルデ,チルド,上付き波形符号(~)/波形記号,波ダッシュ,スワングダッシュ(省略を表す)

(修正後)意味部分
《言語》ティルデ,チルド,上付き波形符号(〜)/波形記号,波ダッシュ,スワングダッシュ(省略を表す)


意味部分のチルダ"~"を全角のチルダ"〜"にする
vina(修正前)意味部分
《音楽》ビーナ(4本の弦とヒョウタンで作った共鳴器からなるインドの古楽器)/vinumの複数形(薬用ワイン)

(修正後)意味部分
《音楽》ビーナ(4本の弦とヒョウタンで作った共鳴器からなるインドの古楽器)/vinumの複数形(薬用ワイン)


意味部分のvinumを全角のvinumにする
終極の英単語VOL.0
B
blackball(修正前)発音部分
blæk''bɔːl

(修正後)発音部分
blækbɔːl


本記事のGASでは処理できないので"''"を削除する
終極の英単語VOL.0
F
fluoresce(修正前)発音部分
flɔːr)rés

(修正後)発音部分
flɔː(r)rés


発音部分が半角括弧で括れていないので括る
fluorine(修正前)発音部分
flˈɔːr)riːn

(修正後)発音部分
flˈɔː(r)riːn


発音部分が半角括弧で括れていないので括る


ステップ4・GASを実行する

リン先生
ステップ4・GASを実行する を開始します。

Googleドライブを開きます。


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

kyokugen020

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

kyokugen021

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

kyokugen022

スプレッドシート名を分かりやすいものにしてください(下図では、「英単語帳」)。
次の2つのシートを作成してください。

  • 作業シート(下図では、「作業シート」。本シートをアクティブシートにしてGASを実行します。)
  • 単語帳CSVシート(下図では、「終極の英単語VOL.1」。本記事の完成品はここにできます。)


メディア

shukyoku023

メモ帳の内容を作業シートのA1セルに貼り付けてください。


次に、必ず作業シート(下図では「作業シート」)を選択した上で、ツールバーの「ツール」をクリックします。

shukyoku024-2

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

kyokugen025

なお、メインアカウント以外でログインした状態だと下図の画面になります。


もしこうなったら、すべてのアカウントからログアウトして、再度ログインしてください。

kyokugen026

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

kyokugen027

プロジェクト名を分かりやすい名前にします(下図だと「CSV変換プログラム」)。


「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

shukyoku027

次のコードをコピーしてください。

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(){

}
shukyoku028

「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。


画面上部にある「実行」をクリックしてください。

shukyoku029

GASの実行が初回だと次のようなダイアログが表示されます。


「権限を確認」をクリックしてください。

shukyoku030-2

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

shukyoku031-2

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

shukyoku032-2

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

shukyoku033-2

GASのプロジェクトにアクセスリクエストを許可します。


「許可」をクリックしてください。

shukyoku034-2

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

shukyoku035

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

shukyoku036

動画にすると次のようになります。


最後まで無事GASが実行されると実行ログに「お知らせ 実行完了」と表示されます。

shukyoku101

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

shukyoku102

「ステップ5・GAS実行後に手動で修正する」に進んでください。

GASを実行したが「関数の実行がタイムアウトしました。…」と実行ログに表示された場合

GASの実行可能時間は6分間のようです。


もし実行して6分経過した場合、下図のように「関数の実行がタイムアウトしました。デバッグを実行するには、デバッガを再起動してください。デバッガを再起動」と表示されます。

shukyoku201

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

shukyoku202

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


上図で言えば2行目〜917行目になります。

shukyoku203

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

shukyoku204

メモ帳の内容を再度作業シートのA1セルに貼り付けてください。


ただし、貼り付ける内容はGAS実行で処理できなかった部分です(下図ではsinfulの単語以降)。

shukyoku205

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

shukyoku251

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

kyokugen252

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

shukyoku029


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

リン先生
ステップ5・GAS実行後に手動で修正する を開始します。

無事GASを実行して処理が済めば、作業シートの2行目以降に全単語の「単語、発音、意味」が列ごとに分かれた結果が書き込みされます。


これをコピーして単語帳CSVシート(下図では「終極の英単語VOL.1」シート)に貼ります。

shukyoku102

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

shukyoku104

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

shukyoku105


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

リン先生
ステップ6・CSVエクスポート を開始します。

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


Anki用にお役立てください。

まとめ

リン先生
以上が「『極終極の英単語』を高速でCSV変換する方法を解説します!」のお話でした。

24,001語以上の単語をAnkiで覚えたいけど、「手作業は嫌!」という人はぜひご活用ください。


今回のGASプログラムは正規表現処理を活用したものですが、もし正規表現とプログラムを理解されたのであればKindleの単語帳の多くはCSV変換処理できるのではないかと考えます。


そうすれば好きな単語帳を効率的にAnkiに取り込みやすくなりますね。


今回は「終極の英単語」というCEFR-C1レベル以上の方向けの単語帳のCSV処理方法となりましたが、今後は諸中級者向け「究極の英単語」のCSV処理方法を掲載したいと思います。


それではAnkiライフを楽しみましょう。

リン先生
Let’s do it!


メール相談受付中

ブログに対するご意見、

英語の勉強法についての相談、

気軽にしていただけたらと思います。

管理人のキャパシティーが超えない範囲で対応させていただきますね♪

(↓ メール相談は↓をクリック! ↓)

mail-soudan-2