見出し画像

ANKIに覚えたいことをなるべく簡単に登録する仕組み【Googleスプレッドシート連携】

ANKIというすばらしい記憶アプリがあります。イメージとしては
記憶定着率を爆上げしてくれる、ものすごく優秀な単語帳アプリ
という感じです。登録するものは、英単語だけでなく、日本語でもなんでもOK。表に覚えたい項目を、裏に覚えたい内容を登録する感じです。

そのすばらしさや使い方のコツについては、各所で語られているのでそちらを参照してください。例えばこちら↓

確かにANKIはすばらしい記憶アプリなのですが、カードを入力するなど、使う環境を整えるまでのハードルが高く、挫折してしまう人も多いかと思います。そこで私が考えた最強の「素早く記録してANKIへの登録する仕組み」をご紹介します。作業環境は iPhone+Mac ですのでよろしくお願いします。

以下、やることを説明していきます。


1. Googleスプレッドシートを準備する

1-1. Googleドライブにアクセスします。Googleのアカウントがない人は作ります
1-2. 画面左上の「+新規」ボタンを押して、新規フォルダを作成します。フォルダ名は「ANKI」にします
1-3. 画面左上の「+新規」ボタンを押して、新規のGoogleスプレッドシートを作成します。ファイル名は「ANKIインポート」にします
1-4. 開いているシートの名前を「ToAdd」にします(シート名の上で右クリックだったような)
1-5. 新しいシートを作り、そのシートの名前を「Added」にします
(これらの名前は後で使うので、変えないでください)

これで、こんな感じのシートができあがったかと思います

2. CSV書き出しのGAS(Google Apps Script)を作る

2-1. GAS作成:Gドライブ画面の左上「+新規」ボタンを押して「その他」の中の「Google Apps Script」を選択します。出てこない場合は、「その他」の中の「アプリを追加」からGoogle Apps Scriptを追加します。

やり方はこちらの説明↓が詳しいので参考にしてください。

2-2. プロジェクト名は好きな名前、例えば「Anki用CSV出力」に変更します。やり方は上のページ↑にあります。
2-3. 編集エリアに以下の内容をコピペします。自分でも何をやっているのか思い出せません。

// https://moripro.net/gas-sheet-to-csv/

function doPost(e) {
  // Create CSV

  // 初回のみ、Tokenを取得するために実行する。2回目以降は不要
  // Logger.log(DriveApp.getRootFolder().getName());
  // Logger.log(ScriptApp.getOAuthToken());

  var sheetName = 'ToAdd'; //CSVファイルにするシート名を指定
  // var ss = SpreadsheetApp.getActiveSpreadsheet();
  var spreadsheetId = "スプレッドシートIDをここにペースト"; // スプレッドシートID
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var sheet = ss.getSheetByName(sheetName);
  
  //データ範囲を二次元配列で取得
  var values = sheet.getDataRange().getValues();
  var myRange = sheet.getDataRange()


  //データにカンマが入っているとcsvがおかしくなるので置換
  for (const [i, record] of values.entries()) {
    for (const [j, value] of record.entries()) {
    values[i][j] = value.replace(",","、");
    }
  }
  Logger.log(values)

  //二次元配列を¥n区切りの文字列に変換
  var csv = values.join('\n');

  Logger.log(csv)
  
  //Blobオブジェクトの作成
  let today = Utilities.formatDate(new Date(),"JST","yyyyMMdd");//今日の日付を取得yyyy-MM-dd方式
  var blob = Utilities.newBlob(csv, MimeType.CSV, today + sheetName + '.csv');
  
  //CSVファイルの保存先フォルダを指定
  var id = 'フォルダIDをここにペースト'; //フォルダID
  var folder = DriveApp.getFolderById(id);
  
  //CSVファイルを作成
  folder.createFile(blob);


  //  移動先シート
  var sheetName2 = 'Added'; //CSVファイルにするシート名を指定
  var tosheet = ss.getSheetByName(sheetName2);


  const rownum = myRange.getLastRow(); 
  const colnum = myRange.getLastColumn();
  Logger.log(rownum,colnum);


  const lastrow = tosheet.getLastRow(); 
  Logger.log = "最終行は" + lastrow;
 
  //  Addedシートに情報を貼り付け
  tosheet.insertRowAfter(lastrow);
  tosheet.getRange(lastrow+1,1,rownum,colnum).setValues(values);

  // ToAddシートをクリア
  sheet.clear();
}



上の内容には、2カ所修正するところがあります。
12行目の「スプレッドシートID」39行目の「フォルダID」です。

スプレッドシートIDは「1. Googleスプレッドシートを準備する」で作成したスプレッドシートをブラウザで開き、URLのこの部分↓をコードの「スプレッドシートIDをここにペースト」のところにコピペします。

https://docs.google.com/spreadsheets/d/この部分の文字列です/edit#gid=0


フォルダIDは、上で作成した「ANKI」フォルダをブラウザで開き、そのURLのこの部分↓を「フォルダIDをここにペースト」のところにコピペします。

https://drive.google.com/drive/folders/この部分の文字列です

これでコードもでき上がり。ここでおもむろに、Apps Script画面上の「▷実行」ボタンを押します。

画面下の実行ログのところがこんな感じに「Execution completed」とか「実行完了」とかなっていればOKです。エラーが出たら、気合いでなんとか修正します。

CSVに書き出した内容が表示される、はず

右上の「デプロイ」をクリックします。これでスクリプトは準備完了です。

3. Macのショートカットを作成する

ここでMacからこのScriptを手軽に呼び出す方法を準備します。なんでもいいのですが、Macに標準で入っている「ショートカット」アプリを使ってみましょう。

3-1. /アプリケーション/ショートカット.app を起動します
3-2. 起動したら、画面上の「ファイル」メニューから「新規ショートカット」を選択します。

⌘+Nでもいいです

こんな感じの画面が開きますので、右上の検索窓に「url」と打ち込んで、右下に表示される候補の中から「URL」をダブルクリックします。

こいつをダブルクリック

同様にすぐ下にある「URLの内容を取得」もダブルクリックします。するとこんな感じ↓になります。

1つ目の「URL」のところに入力するURLを用意します。Apps Scriptの編集画面に戻って、右上「デプロイ▽」を押して「デプロイを管理」に入ります。

日本語だと「デプロイ▽」→「デプロイを管理」になってます

次に出てくる画面の設定は
「種類の選択」→「ウェブアプリ」
「次のユーザーとして実行」→「自分」
「アクセスできるユーザー」→「全員」
として「デプロイ」を押します。
詳細はこちら↓を参考にしてください。

するとデプロイされた情報が表示されるので「ウェブアプリ」のところのURLの文字列をコピぺします↓

↑ここをクリックすればURLがコピーされる

やっと、作りかけの「ショートカット」アプリに戻って、ここ↓の1番目の項目の「apple.com」と書いてあるところをクリックして、先ほどコピーしたURLをペーストします。

結果、以下のようになるはずです。

「ファイル」メニューの「名称変更」から、ショートカットの名前をつけます。上では「Anki CSV出力 Mac」となっていますが、ここは好きな名前でいいです。

画面右側の設定項目をいじった記憶はないのですが、もしかすると何か必要かもしれないので、うまく動作しない場合はチェックしてみてください。最初に実行したときになんか「許可しますか」とか聞かれて「はい」と答えると勝手にこうなった気がします。

作成したショートカットは、ショートカットアプリのメインウィンドウの「すべてのショートカット」の中に入っているかと思います。これを下のように「メニューバー」の中にドラッグして放り込むと、メニューバーのショートカットメニューの中に表れます(わかりにくいので下のスクショを見てください)。

この「メニューバー」の中に入れると
ここから選択できるようになる

メニューバーからこのショートカットを選択すると、すばやく実行できます。効率化にこだわりがある人は、Alfredを使ったりBetterTouchToolを使ったりお好きにどうぞ。

Googleドライブのアプリをインストールしておくと、ホームディレクトリに「Google ドライブ」というフォルダができて、クラウドのGoogleドライブと同期されます。つまり、Googleドライブ内に書き出したCSVファイルが、勝手にローカルにも表れます

うまくいっていたら、 Googleドライブ/マイドライブ/ANKI フォルダの中に
20230123ToAdd.csv
のようなCSVファイルができているはずです。

4. 書き出したCSVファイルをANKI(PC)で読み込む

ここまでで、覚えたいことをメモするGoogleスプレッドシートを準備し、メモした内容をCSVファイルに書き出すScriptを作り、それを実行するショートカットを作成できました。次は、書き出したCSVをANKIアプリに読み込む手順です。

PCのANKIアプリの「ファイル」メニューの「読み込む」で、 Google ドライブ/Anki に出現しているCSVファイルを指定すればOKです↓

読み込みたいファイルを指定する。

「読み込む」を押すと、CSVファイルの内容がデフォルトのデッキに読み込まれます。他のデッキへ移動とか調整とかのカスタマイズは、お好みでどうぞ。

個人的には、こちらのテンプレートを使わせてもらっています。有料です。
https://note.com/satoken990/n/nd072256f6fda

5. 覚えたいことを日常的にGoogleスプレッドシートにメモする準備

あとは、覚えたいことがあったらパッとGoogleスプレッドシートにメモすることを習慣にすると良いです。これはスマホでできるといいですね。Googleスプレッドシートアプリをインストールして、開きやすいところに置いておくと良いです。
→ Googleスプレッドシート

アプリを開くとこんな画面↓です。私の場合、ANKI登録シートをよくいじるので、最終閲覧のところに出てきていますが、初めての場合は上の検索窓をタップして…

「anki」とでも入力すれば、「ANKIインポート」のスプレッドシートが出てくるはずですので、タップして開きます。

「ToAdd」シートが開かれていることを確認して(デフォルト開いているとは思いますが一応)、A列に覚えたい単語や事柄、B列に回答を書いていきます。

メモする内容は英単語である必要はなく、覚えたい事柄であればなんでもいいです。例えば
A列「文章に含まれる単語を構成する文字を並べ替えても、多くの人間はその文章を問題なく読めてしまう現象とは?」
B列「タイポグリセミア現象(typoglycemia)」
とかでもいいわけです。

覚えたいことがたくさんある場合は、PCで「ANKIインポート」スプレッドシートを開いて「ToAdd」シートに書いていってもOKです。スマホよりパソコンの方が早いですよね。

何個か溜まってきたら、ショートカットを呼び出してCSVに書き出して、PCのANKIアプリに読み込ませて同期します。これで、登録した問題がスマホのANKIアプリによろしい頻度で出題されてきます。


これで、準備が整いました。あとは日々、以下のフローを回していくだけです。

  1. スマホまたはPCから覚えたいことをGoogleスプレッドシートに登録

  2. 登録したスプレッドシートの内容をcsv書き出す(ショートカット利用)

  3. 書き出したCSVファイルをANKI(PC)で読み込む

  4. スマホのANKIアプリで日々復習する

あまり難しい問題を出しすぎないのがコツですね。

さぁ、これであなたもみるみる物知りに!やったね!

読んでいただいて、ありがとうございます! もしサポートしていただけると、とても喜びます。 ありがたく、パソコン関係グッズ購入費、 作業時のカフェオレ購入費、などに使わせていただきます。