Simple Node Importer
エンドユーザーが開発知識なしでCSVファイルからコンテンツEntity(Node、ユーザー、Taxonomy Term)をインポートできるDrupalモジュールです。
simple_node_importer
概要
Simple Node Importerは、CSVファイルからDrupalにコンテンツをインポートするためのユーザーフレンドリーなインターフェースを提供します。エンドユーザーはCSVファイルをアップロードし、柔軟なマッピングUIを使用してカラムをEntityフィールドにマッピングし、データを一括インポートできます。このモジュールは、あらゆるコンテンツタイプのNode、ユーザー、Taxonomy Termのインポートをサポートしています。
インポートに失敗した場合、モジュールはResolution Centerを提供し、ユーザーは失敗したレコードを表示し、失敗の理由を理解し、問題を直接解決できます。モジュールはすべてのインポート操作を追跡し、失敗したレコードをCSVとしてダウンロードして修正することができます。
主な機能には、自動フィールド検出、複数値フィールドのサポート、Entity参照の処理(Taxonomy Term、ユーザー)、自動ユーザー作成オプション、Taxonomy Termの自動作成が含まれます。
Features
- シンプルなアップロードインターフェースでCSVファイルからEntity(Node、ユーザー、Taxonomy Term)をインポート
- CSVカラムをEntityフィールドにマッピングする柔軟なマッピングUIと視覚的なフィードバック
- 失敗したインポートレコードを追跡・解決するためのResolution Center(編集・保存機能付き)
- 選択したコンテンツタイプのフィールドに基づいたサンプルCSVテンプレートファイルのダウンロード
- 複数のCSVカラムを1つのフィールドにマッピングする複数値フィールドのサポート
- CSVで指定された作成者がシステムに存在しない場合の自動ユーザー作成オプション
- 参照されたVocabularyにTermが存在しない場合のTaxonomy Termの自動作成
- 進捗追跡付きの大規模インポート用バッチ処理
- 成功・失敗レコード数を表示するインポートステータス追跡
- 外部で修正して再インポートするための失敗レコードのCSVダウンロード
Use Cases
CSVからの一括Nodeインポート
コンテンツ管理者がレガシーシステムから500件の記事をインポートする必要があります。記事フィールドに一致するカラム(タイトル、本文、作成者メール、カテゴリ)を持つCSVにレガシーデータをエクスポートします。Simple Node Importerを使用して、「Node」Entityタイプと「記事」コンテンツタイプを選択し、CSVをアップロードし、マッピングUIを使用してCSVカラムをDrupalフィールドに接続します。バッチ処理がすべての記事をインポートし、適切なフィールド値と作成者の帰属を持つNodeを作成します。
ユーザー移行
組織が別のプラットフォームから移行しており、1000件のユーザーアカウントをインポートする必要があります。ユーザー名、メール、ステータスのカラムを含むCSVを準備します。「ユーザー」Entityタイプを選択した後、CSVカラムをユーザーフィールドにマッピングします。インポートによりユーザーアカウントが作成され、Resolution Centerで検証に失敗したレコード(重複メール、無効な形式)を修正できます。
Taxonomy Term階層のインポート
サイト管理者が親子関係を持つ複雑なカテゴリTaxonomyを作成する必要があります。Vocabulary名、親Term、子Termのカラムを含むCSVを準備します。Taxonomyインポートは必要に応じてVocabularyを作成し、Term階層を自動的に確立します。
失敗したインポートの処理
200件のNodeをインポートした後、無効な日付形式と必須フィールドの欠落により15件のレコードが失敗しました。管理者はResolution Centerにアクセスし、失敗したレコードを表示し、各レコードの「編集して保存」をクリックして、どのフィールドに問題があったかを正確に示す事前入力されたNodeフォームを開きます。データを修正して保存すると、Resolution Centerのステータスが自動的に更新されます。
コンテンツタイプのフィールドテンプレート
コンテンツ編集者がイベントをインポートするためにCSVに必要なカラムがわかりません。インポートページに移動し、「Node」と「イベント」コンテンツタイプを選択してから、「サンプルファイルをダウンロード」をクリックします。これにより、すべてのイベントフィールド(タイトル、日付、場所、説明)に一致するヘッダーを持つCSVが生成され、それを入力してアップロードできます。
Tips
- インポートデータを準備する前に、必ずサンプルCSVテンプレートをダウンロードして確認し、カラム名が期待されるフィールドと一致していることを確認してください
- Resolution Centerの「CSVダウンロード」機能を使用して失敗したレコードを取得し、外部で修正してから新しい操作で再インポートしてください
- 大規模なインポートの場合、トラブルシューティングを容易にするためにデータを小さなCSVファイルに分割することを検討してください
- Entity参照フィールド(ユーザー、Taxonomy)には、マッチング可能な値を含める必要があります - ユーザーにはメール、TaxonomyにはTerm名
- ブールフィールドは真の値として「y」、「1」、または「TRUE」を受け入れ、偽の値として「n」、「0」、または「FALSE」を受け入れます
- モジュールはインポートを追跡するためのカスタムコンテンツタイプ「simple_node」を作成します - インポートが完了するまでこれらのNodeを削除しないでください
Technical Details
Admin Pages 5
/admin/config/development/snodeimport
Simple Node Importerのメイン設定ページ。管理者はインポート可能なEntityタイプとコンテンツタイプ、ユーザーの自動作成動作、Taxonomy Term設定を構成できます。
/nodeimporter/resolution-center
失敗したレコードを含むすべてのインポート操作のテーブルを表示します。ユーザーは成功/失敗の件数を表示し、失敗したレコードをCSVとしてダウンロードし、個別の失敗レコードを表示したり、インポートログを削除したりできます。
/node/add/simple_node
新しいインポート操作を作成するためのインターフェース。ユーザーはEntityタイプ、コンテンツタイプ(Nodeの場合)を選択し、インポートするデータを含むCSVファイルをアップロードします。
/nodeimport/{content_type}/{node}/mapping
CSVカラムをコンテンツタイプのフィールドにマッピングする柔軟なマッピングインターフェース。選択したコンテンツタイプのすべての利用可能なフィールドを表示し、対応するCSVカラムを選択できます。
/nodeimport/{content_type}/{node}/importing
インポートバッチ処理を開始する前の確認ページ。作成者の処理に関する重要な情報を表示し、最終確認を求めます。
権限 4
Hooks 4
hook_form_alter
simple_node Nodeフォームを変更し、Entityタイプ選択のAJAXコールバック、フィールドの表示状態、CSVアップロード処理、検証を追加します。また、失敗したインポートを解決する際にフィールドを事前入力するために対象Entityフォームも変更します。
hook_node_presave
選択されたコンテンツタイプと作成日に基づいて、simple_nodeコンテンツタイプの自動タイトルを設定します。
hook_theme
マッピングUIテーブル、コンテンツ情報ノート、マッピングヘルプテキストのテーマhookを定義します。
hook_help
モジュールのヘルプページに機能と使用方法を説明するヘルプテキストを提供します。
Troubleshooting 7
/admin/config/development/snodeimportに移動し、Entityタイプ設定セクションで少なくとも1つのEntityタイプ(Node、ユーザー、またはTaxonomy)を有効にしてください。
コンテンツタイプはモジュール設定で有効化されている必要があります。/admin/config/development/snodeimportに移動し、コンテンツタイプ設定で目的のコンテンツタイプにチェックを入れてください。
作成者フィールドは既存のユーザーに一致するメールアドレスを期待しています。設定でユーザーの自動作成を有効にするか、CSVのすべてのメールアドレスが既存のユーザーアカウントに対応していることを確認してください。
Taxonomy Termが正しいVocabularyに存在することを確認してください。Termを自動的に作成する必要がある場合は、設定で「新しいTaxonomy Termの追加を許可」を有効にしてください。
「Y-m-d」や「Y-m-d H:i:s」などの標準的な日付フォーマットを使用してください。日時フィールドの設定に固有の許可されたフォーマットについては、マッピングのヘルプテキストを確認してください。
複数値フィールドの各値は別々のCSVカラムに配置する必要があります。マッピングページで、そのフィールドに関連するすべてのカラムを選択してください(ドロップダウンは複数選択が可能です)。
インポートNodeは1回限りの使用です。再インポートが必要な場合は、/node/add/simple_nodeに移動して新しいインポートNodeを作成してください。
Security Notes 5
- モジュールはインポート操作に特定の権限を必要とします - 信頼できるユーザーのみが「admin access simple_node_importer」権限を持つようにしてください
- CSVファイルはDrupalのファイルシステムにアップロードされ保存されます - 適切なファイル権限が設定されていることを確認してください
- ユーザーの自動作成は「認証済み」ロールのみでアカウントを作成します - 管理者ロールは手動で割り当てる必要があります
- モジュールはアカウントを作成する前にメール形式を検証し、重複ユーザーをチェックします
- インポートされたコンテンツはCSVデータから公開ステータスを継承します - インポート前にステータスカラムの値を確認してください