テキストファイル
いくつかの条件を満たせば、フィールドがカンマ、セミコロン、またはタブで区切られたプレーンテキストファイルをAnkiにインポートできます。
-
ファイルはプレーンテキスト(myfile.txt)でなければなりません。myfile.xls、myfile.rtf、myfile.docなどの他の形式は、まずプレーンテキストファイルとして保存する必要があります。
-
ファイルはUTF-8形式でなければなりません(以下参照)。
-
最初の行も区切り文字を定義します。Ankiが最初の行で ';' を見つけた場合はそれを使用し、カンマを見つけた場合はそれを使用するなどです。
-
Ankiはファイル内のフィールド数を最初の(コメントされていない)行を見て決定します。ファイル内の後のレコードにフィールドが少ない場合、Ankiは欠けているフィールドを空白として扱います。レコードに余分なフィールドが含まれている場合、余分な内容はインポートされません。
テキストファイル内のフィールドは、タグフィールドを含むノート内の任意のフィールドにマッピングできます。インポート時に、テキストファイルのどのフィールドがノートのどのフィールドに対応するかを選択できます。
テキストファイルをインポートする際、カードをどのデッキに入れるかを選択できます。ただし、テンプレートの1つ以上にデッキオーバーライドオプションが設定されている場合、カードは選択したデッキではなく、そのデッキに移動します。
以下は3つのフィールドを持つ有効なファイルの例です:
apple;banana;grape
some text;other text;yet more text
フィールド内に改行やフィールド区切り文字を含める方法は2つあります。
フィールドの内容を引用符で囲むことで文字をエスケープする:
hello;"this is
a two line answer"
two;this is a one line field
"this includes a ; (semicolon)";another field
引用符はフィールドの開始と終了を示すため、フィールド内に引用符を含めたい場合は、単一のダブルクォートを2つのダブルクォートに置き換えて、通常の処理から「エスケープ」する必要があります。例えば:
field one;"field two with ""escaped quotes"" inside it"
LibreOfficeのようなスプレッドシートプログラムを使用してCSVファイルを作成する場合、ダブルクォートのエスケープは自動的に処理されます。
HTMLの改行を使用する:
hello; this is<br>a two line answer
two; this is a one line one
HTMLの改行を機能させるには、インポートダイアログで「フィールド内のHTMLを許可する」チェックボックスをオンにする必要があります。
エスケープされた複数行は、複数行にまたがる穴埋め問題を使用している場合、正しく動作しません。この場合、HTMLの改行を使用してください。
別のフィールドにタグを含め、それをインポートダイアログでタグフィールドとして選択することもできます:
first field;second field;tags
最初の行が無視される(#)有効なファイルの例は次のとおりです:
# this is a comment and is ignored
foo bar;bar baz;baz quux
field1;field2;field3
スプレッドシートとUTF-8
ファイルにアクセント記号や日本語などの非ラテン文字が含まれている場合、Ankiはファイルが「UTF-8エンコーディング」で保存されていることを期待します。これを行う最も簡単な方法は、Excelの代わりに無料のLibreOfficeスプレッドシートプログラムを使用してファイルを編集することです。LibreOfficeはUTF-8を簡単にサポートし、Excelとは異なり、複数行のコンテンツも正しくエクスポートします。Excelを使い続けたい場合は、このフォーラム投稿を参照してください。
LibreOfficeを使用してAnkiが読み取れるファイルにスプレッドシートを保存するには、ファイル > 名前を付けて保存 を選択し、ファイルの種類としてCSVを選択します。デフォルトのオプションを受け入れると、LibreOfficeはファイルを保存し、その後保存されたファイルをAnkiにインポートできます。
HTML
Ankiは、テキストファイルからインポートされたテキストをHTML(ウェブページで使用される言語)として扱うことができます。これにより、太字、斜体などのフォーマットを含むテキストをテキストファイルにエクスポートし、再度インポートすることができます。HTMLフォーマットを含めたい場合は、インポート時に「フィールド内のHTMLを許可する」チェックボックスをオンにすることができます。カードの内容に山括弧やその他のHTML構文が含まれている場合は、これをオフにすることをお勧めします。
ファイルのフォーマットにHTMLを使用したいが、山括弧やアンパサンドも含めたい場合は、次の置換を使用できます:
文字 | 置換 |
---|---|
< | < |
> | > |
& | & |
メディアのインポート
テキストファイルのインポートに音声や画像を含めたい場合は、ファイルをコレクションのメディアフォルダにコピーします。メディアフォルダにサブディレクトリを作成しないでください。一部の機能が動作しなくなります。
ファイルをコピーした後、テキストファイルのフィールドの1つを次のように変更します。
<img src="myimage.jpg">
または
[sound:myaudio.mp3]
または、ブラウズ画面で検索と置換機能を使用して、すべてのフィールドを一度に更新することもできます。各フィールドに「myaudio」のようなテキストが含まれていて、それを音声として再生したい場合は、(.*)を検索し、[sound:\1.mp3]に置換します。「正規表現」オプションを有効にしてください。
これらの参照を含むテキストファイルをインポートする際には、「HTMLを許可する」オプションを有効にする必要があります。
テンプレートで次のようにすることを考えるかもしれません:
<img src="{{フィールド名}}">
Ankiはこれをサポートしていません。理由は2つあります。使用されているメディアを検索するのにコストがかかるため(各カードをレンダリングする必要があります)、およびそのような機能は共有デッキのユーザーには明らかではないためです。代わりに検索と置換の手法を使用してください。
大量のメディア
大量のメディアを一度にインポートする別の方法として、メディアインポートアドオンを使用することができます。このアドオンは、選択したフォルダ内のすべてのファイルに対して自動的にノートを作成します。ファイル名が表側に表示され(ファイル拡張子は除外されるため、例えばapple.jpgというファイルがある場合、表側には「apple」と表示されます)、画像や音声が裏側に表示されます。メディアとファイル名の配置を変更したい場合は、後で作成されたカードのノートタイプを変更することができます。
タグの追加
インポートするすべての行に「tag1」と「tag2」を追加したい場合は、次の内容をテキストファイルの先頭に追加します:
tags:tag1 tag2
重複と更新
テキストファイルをインポートする際、Ankiは最初のフィールドを使用してノートが一意かどうかを判断します。デフォルトでは、インポートするファイルの最初のフィールドがコレクション内の既存のノートと一致し、その既存のノートがインポートするノートと同じタイプである場合、既存のノートの他のフィールドはインポートされたファイルの内容に基づいて更新されます。インポート画面のドロップダウンボックスでこの動作を変更し、重複を完全に無視するか、既存のノートを更新する代わりに新しいノートとしてインポートすることができます。
「一致範囲」設定は、重複がどのように識別されるかを制御します。「ノートタイプ」が選択されている場合、Ankiは同じノートタイプを持つ他のノートが同じ最初のフィールドを持っている場合に重複を識別します。「ノートタイプとデッキ」に設定されている場合、既存のノートがインポート先のデッキにある場合にのみ重複がフラグされます。
更新がオンになっていて、インポートするノートの古いバージョンがすでにコレクションに含まれている場合、それらはインポートダイアログで設定したデッキに移動されるのではなく、現在のデッキにそのまま更新されます。ノートがその場で更新される場合、すべてのカードの既存のスケジューリング情報は保持されます。
.apkgファイルで重複がどのように処理されるかについては、パッケージ化されたデッキセクションを参照してください。
ファイルヘッダー
Anki 2.1.54以降では、インポートをより強力かつ便利にするために、テキストファイルに含めることができる特定のヘッダーをサポートしています。これらは #key:value
ペアで構成され、ファイルの先頭に別々の行として記載する必要がありますが、タグ行がそれらに先行することもあります。ヘッダー行はコメント文字 #
で始まるため、以前のAnkiクライアントはそれらを無視します。
この機能を使用するには、2.1.54の設定画面で新しいインポートオプションを有効にする必要があります。2.1.55では、新しいインポートパスがデフォルトになっています。
キー | 許可される値 | 動作 |
---|---|---|
separator | Comma 、Semicolon 、Tab 、Space 、Pipe 、Colon 、または対応するリテラル文字 | フィールドの区切り文字を決定します。 |
html | true 、false | ファイルがHTMLとして扱われるかどうかを決定します。 |
tags | スペースで区切られたタグのリスト | 旧構文と同じです。 |
columns | 以前に設定された区切り文字で区切られた名前のリスト | 列の数を決定し、インポート時にその名前を表示します。 |
notetype | ノートタイプの名前またはID | ノートタイプが存在する場合、それを事前設定します。 |
deck | デッキの名前またはID | デッキが存在する場合、それを事前設定します。 |
notetype column | 1 、2 、3 、... | 各ノートのノートタイプ名またはIDが含まれる列を決定します。ノートタイプ列を参照してください。 |
deck column | 1 、2 、3 、... | 各ノートのデッキ名またはIDが含まれる列を決定します。デッキ列を参照してください。 |
tags column | 1 、2 、3 、... | 各ノートのタグが含まれる列を決定します。 |
guid column | 1 、2 、3 、... | 各ノートのGUIDが含まれる列を決定します。GUID列を参照してください。 |
いくつかのヘッダーにはさらなる影響があります。
ノートタイプ列
通常、ファイル内のすべてのノートは単一のノートタイプにマッピングされ、そのノートタイプのどのフィールドにどの列をマッピングするかを選択できます。
ノートタイプ名またはIDを含む列がある場合は、この動作が変わります。これにより、異なるノートタイプのノートをインポートでき、それらのフィールドは暗黙的にマッピングされます。最初の通常の列は、ノートタイプに関係なく、すべてのノートの最初のフィールドに使用され、2番目の通常の列は2番目のフィールドに使用される、という具合です。ここで「通常の列」とは、デッキ、タグ、ノートタイプ、またはGUIDのような特別な情報を含まない列を指します。
デッキ列
通常、テキストファイルのインポートによって作成された新しいカードは、選択した単一のデッキに配置されます。しかし、ファイルにデッキ列が含まれている場合、そのノートの新しいカードは指定されたデッキに配置されます。デッキが存在しない場合、指定された名前のデッキが作成されます。
GUID列
GUIDは「グローバル一意識別子」を意味します。Ankiでノートを作成すると、Ankiは各ノートに一意のIDを割り当て、重複チェックに使用します。GUIDを含めてノートをエクスポートすると、ノートに変更を加えても、GUIDフィールドを変更しない限り、既存のノートを更新するためにノートをインポートできます。
GUIDはAnkiによって作成されることを意図しています。例えば、MYNOTE0001のような独自のIDを作成している場合、それらのIDをAnkiの内部GUIDに割り当てるのではなく、最初のフィールドに配置することをお勧めします。インポート時に、Ankiは重複チェックのために最初のフィールドも使用できるため、ノートを更新できるようにするためにIDをGUIDにする必要はありません。