Secret Ninja Blog

Customer Experience Senior Directorしてます

Techplayで入場者に配布用の名刺カードを作った

オフラインイベントといったらネームプレートだ!というわけで、Chatgptさんを使いつつ、今度のイベント用名刺カードを作った。

完成系

手順

名刺テンプレートのデザインが必要だったので、下記で掲載codepenを利用させてもらった。

Codepenをサインアップして、https://codepen.io/kohki-shikata/pen/NBBZyVをForkする。

一番右ペインにあるdata = をTechplayの入場者データに置き換えればよいので、入場者リストをCSVでダウンロードする。

徐ろにChatgptを開いて上記のdata = のフォーマットに合うようにデータ抽出をして、クリップボードにコピペしてもらうコードを生成する。

結果が下記。今回はTechplayのアンケートで氏名所属名職種などをきいたので、それをpersonのところで選択して抽出する。

import csv
import subprocess

# CSVファイルからデータを読み込む関数
def read_csv(filename):
    data = []
    try:
        with open(filename, newline='', encoding='CP932', errors='ignore') as file:
            reader = csv.DictReader(file)
            for row in reader:
                person = {
                    "name": row.get('氏名', ''),
                    "position": row.get('所属名', ''),
                    "email": row.get('職種', ''),
                    "phone": row.get('受付番号', '')
                }
                data.append(person)
        return data
    except FileNotFoundError:
        print(f"Error: {filename} not found.")
        return []

# CSVファイルのパス
csv_file = 'data.csv'

# CSVファイルからデータを読み込む
data = read_csv(csv_file)

# JavaScriptの変数dataの文字列を作成
js_data = "var data = [\n"
for person in data:
    js_data += "  {\n"
    js_data += f"    name: '{person['name']}',\n"
    js_data += f"    position: '{person['position']}',\n"
    js_data += f"    email: '{person['email']}',\n"
    js_data += f"    phone: '{person['phone']}'\n"
    js_data += "  },\n"
js_data += "]"

# クリップボードにデータを保存
process = subprocess.Popen('pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE)
process.communicate(js_data.encode('utf-8'))

print("Data has been copied to the clipboard.")

pythonで上記コードを実行するとクリップコードに保存されるので、dataの部分だけ上書きすれば良い。 dataの配列データが多い場合は表示がきれいにできないので、適当な数に減らして何回か分けてください。

CodepenをDebugモードで開き、印刷をすればできあがり。