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

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

今回は12,001-24,000語レベルの難単語を扱った「極限の英単語」。


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


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


対象書籍

書籍1
sla-gaikokugo-gakushu-no-kagaku
極限の英単語 Vol.1 15000語レベル Kindle版 / なりしか
Amazon
書籍2
sla-gaikokugo-gakushu-no-kagaku
極限の英単語 Vol.2 18000語レベル Kindle版 / なりしか
Amazon
書籍3
sla-gaikokugo-gakushu-no-kagaku
極限の英単語 Vol.3 21000語レベル Kindle版 / なりしか
Amazon
書籍4
sla-gaikokugo-gakushu-no-kagaku
極限の英単語 Vol.4 24000語レベル Kindle版 / なりしか
Amazon

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


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


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


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


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


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


この記事です

shukyoku-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を起動。


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

kyokugen01

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

kyokugen02

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

kyokugen03

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


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

kyokugen04

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


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

kyokugen05

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


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

kyokugen06

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


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

kyokugen07

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

kyokugen08

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


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

kyokugen09

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

kyokugen10

デッキ画面が開きます。


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

kyokugen11

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

kyokugen12

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

kyokugen13

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


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

kyokugen14

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

kyokugen15

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

kyokugen16


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

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

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

kyokugen017

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

kyokugen018

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

kyokugen019


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

リン先生
ステップ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)

半角のイコールをそのままセルに書き出しすると
関数エラーになるので、前後を全角文字で括る
xing(修正前)意味部分 =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を実行する

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

Googleドライブを開きます。


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

kyokugen020

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

kyokugen021

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

kyokugen022

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

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

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


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

kyokugen024

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

kyokugen025

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


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

kyokugen026

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

kyokugen027

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

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

}
kyokugen028

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


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

kyokugen029

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


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

kyokugen030

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

kyokugen031

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

kyokugen032

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

kyokugen033

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


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

kyokugen034

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

kyokugen035

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

kyokugen036

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


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

kyokugen101

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

kyokugen102

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

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

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


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

kyokugen201

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

kyokugen202

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


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

kyokugen203

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

kyokugen204

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


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

kyokugen205

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

kyokugen251

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

kyokugen252

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

kyokugen029


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

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

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


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

kyokugen103

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

kyokugen104

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

kyokugen105


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

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

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


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

まとめ

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

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


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


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


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


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

リン先生
Let’s do it!


メール相談受付中

ブログに対するご意見、

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

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

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

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

mail-soudan-2