CSV経由でユーザーをインポート

CSV を使用してユーザーを招待する「フロントエンド」の方法があることは知っていますが、サイトに追加される何千人もの人々にメールが送信されるため、私のケースでは機能しません。

CLI から追加しようとすると、次のエラーが発生します。

/var/www/discourse# rails runner script/import_scripts/csv_importer.rb /var/www/discourse/tmp/users.csv
既存のグループを読み込んでいます…
既存のユーザーを読み込んでいます…
既存のカテゴリを読み込んでいます…
既存の投稿を読み込んでいます…
既存のトピックを読み込んでいます…
ファイルが見つかりません: /var/www/discourse/tmp/emails.csv
ファイルが見つかりません: /var/www/discourse/tmp/custom_fields.csv
bundler: コマンドの読み込みに失敗しました: script/rails (script/rails)
/var/www/discourse/script/import_scripts/csv_importer.rb:29:in initialize': undefined method headers’ for nil (NoMethodError)

@imported_custom_fields_names = @imported_custom_fields.headers.drop(1)
                                                       ^^^^^^^

何が起こっているかについての考えはありますか?

このスクリプトは移行スクリプトであり、ユーザーを追加するという単一のタスクを実行するためのものではありません。

単に多数の実際のユーザーアカウントを作成したいのですか、それともテスト用ですか?

なるほど!インポーターを見ていて、マイグレーションではないと気づきました!ヒントありがとうございます。

大量のユーザーをCSV経由でインポートしたいです。

インポートとマイグレーションは、ほとんど同義語です。

これにより、それらのユーザーをすべて作成する作業が行われるはずです(パスワードがないため、おそらくメールを送信してもらうことでパスワードを取得する必要があります)。

機能させるには、プログラミングについてある程度理解する必要があるでしょう。

まず、お誕生日おめでとうございます。

私にはプログラミングスキルがほとんどありません。users.csvを「指し示す」import.rbファイルを起動するだけで済むと思っていました。

出力されたエラーメッセージは私には全く意味が分かりませんでした。インポートスクリプトの29行目を見るとヘッダーを参照していたので、CSVファイルの列のことだと思い、時間をかけていじってみましたが、効果はありませんでした。

あまり進んでいませんね。CSVファイルすら開けていませんから。

これは、30秒で済むかもしれないし、何時間もかかるかもしれないという、いらだたしい問題の一つです。

しかし、そこにファイルをコピーしてみるのも一つの手です。コンピューターのファイルシステム内の場所と、コンテナ内の場所が異なるため、これは厄介です。その問題を解決できたら、列の見出しをいじり始めることができます。

元の問題に対する簡単な解決策がある場合があります[1]

メールを無効にしてユーザーをインポートし、その後メールを再度有効にします。


  1. x-y問題を参照 ↩︎

「いいね!」 1

なるほど、しかしここで問題なのは、インポーターがusers.csvを読み込んだと思うことです。

emails.csvなどはインポートしたくありません。

それとも、これはマルチパートインポーターなのでしょうか?ユーザー(名前)が1つのcsvにあり、メールが別のcsv(emails.csv)にある、といった具合に。

エラーを出していないので、users.csvファイルは見つけているようです。