E-posta servisi için kişilerGeliştirme ve Özelleştirme

Kişi dışa aktarımlarınızı e-posta pazarlama servisinize içe aktarılmaya hazır temiz bir CSV'ye dönüştüren bir Python betiği

Genellikle 15 dakika içinde hazırRevizyonlar dahilKalite kontrolü
Paketler
Ödeme korumasıAyrıntılar
  • Paket kapsamındaki revizyonlar ücretsizdir.
  • Teslimattan sonraki 3 gün içinde yanıt vermezseniz iş otomatik olarak onaylanır.

Para, ödeme yaptığınızda bloke edilir ve yalnızca işi onayladığınızda aktarılır.

Kişi dışa aktarımlarınızı e-posta pazarlama servisinize içe aktarılmaya hazır temiz bir CSV'ye dönüştüren bir Python betiği

Örnek sonuç

Standart paket için örnek

Merging the monthly sales files of 9 shops into one Excel report

How it is run

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO  shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN  shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO  Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")

Settings, not code

The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:

[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price

A part of the code

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Reads one shop's file and gives it the report's column names."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: no column for '{name}' (looked for {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.

Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.

Müşteri ve tüm ayrıntılar kurgusaldır.

Bu hizmet hakkında

Bir mağazadan, CRM'den ya da etkinlik kayıtlarından dışa aktarılan kişiler, bir e-posta pazarlama servisinin içe aktarmak istediğine nadiren uyar: başka sütun adları, tek hücrede ad ve soyad, tuhaf yerlerde etiketler, abonelikten çıkmış ama hâlâ listede olan kişiler. Bu Python betiği dışa aktarımlarınızı okur ve servisinizin içe aktarma düzeninde tek bir temiz CSV yazar: gerekirse ayrılan adlar, eşlenen alanlar ve etiketler, dışarıda bırakılan biçimi bozuk e-postalar ve kopyalar; Standart paketten itibaren yalnızca onay işareti olan kişiler tutulur ve abonelikten çıkanlar kaldırılır, kontrol etmeniz için atılan satırları içeren bir dosyayla. Sizden haber almayı kabul etmiş kendi kişileriniz içindir; asla satın alınmış ya da toplanmış listeler için değildir. Bilgisayarınızda çalışır ve servise bağlanmaz; dosyayı kendiniz içe aktarırsınız.

Neler dahil

  • Neler alırsınızPython betiğini, adım adım talimatlar içeren bir README dosyasını ve Standart paketten itibaren alan ve etiket eşlemesini içeren bir ayar dosyasını barındıran bir ZIP arşivi; kod sipariş sayfasında da gösterilir.
  • Servisinizin düzeniİçe aktarma şablonuna ya da örnek dosyasına göre
  • Onaya saygıStandart paketten itibaren yalnızca kabul edenler, abonelikten çıkanlar yok
  • Kopyalar ve yazım hataları ayıklanırBiçimi bozuk adresler ve tekrarlar dışarıda bırakılır
  • Atılan satırlar saklanırNeyin neden dışarıda bırakıldığını gösteren ayrı bir dosya
  • Okunabilir kodYorumlarla; sonradan alan eklemek kolay

Nasıl çalışır

  1. 1
    ÖrneklerHer dışa aktarımdan uydurma satırlar ve servisinizin içe aktarma formatını gönderirsiniz
  2. 2
    KodBetiği ve çalıştırma kılavuzunu yazarız
  3. 3
    DeneyinÇalıştırır, atılan satırlara göz atar ve küçük bir deneme listesini içe aktarırsınız
  4. 4
    DeğişikliklerPaketiniz kapsamında değişiklik ister, varsa hata mesajını gönderirsiniz

Sizden neler gerekiyor

Her dışa aktarımın başlığı ve uydurma adlar ve e-postalarla ama aynı düzende 10-20 satır, hangi sütunun onayı ve hangisinin abonelikten çıkmayı gösterdiği, kullandığınız e-posta pazarlama servisi ve içe aktarma şablonu ya da içe aktarma yardım sayfasının bağlantısı ve etiketlerin veya segmentlerin nasıl belirleneceği. Kişilerin nasıl toplandığı (mağazanız, kayıt formu, etkinlikler). Gerçek listeyi asla göndermeyin.

Size soracaklarımız:

  • Kişiler nereden geliyor?
  • Hangi e-posta servisine içe aktaracaksınız?
  • Onay nasıl kaydediliyor?
  • Etiketlere ya da segmentlere ihtiyacınız var mı?

Paketleri karşılaştırın

PaketlerTemelTek dışa aktarım, tek format$16StandartAyarlı dışa aktarım$33PremiumKişi aracı$67
Teslim süresi1 gün2 gün3 gün
Revizyonlar123
Koden fazla 150 satıren fazla 400 satıren fazla 1.000 satır
Kod dosyası1en fazla 3en fazla 8
Ayar dosyasıHayırEvetEvet
Anlaşılır hata mesajları ve logHayırEvetEvet
Çalıştırma seçenekleri ve zamanlanmış çalıştırma kılavuzuHayırHayırEvet
Kurulum ve çalıştırma kılavuzu (README)EvetEvetEvet
DilPythonPythonPython
Sipariş ver TemelSipariş ver StandartSipariş ver Premium

Ödeme koruması

Sipariş verirken ödersiniz, ancak para yalnızca onaylanan iş için aktarılır.

  • Sabit fiyatPaket fiyatı, ödeme yaptıktan sonra değişmez.
  • Para bloke edilirÖdeme yaptığınızda tutar yalnızca bloke edilir. İşi onayladığınızda hizmete aktarılır.
  • Teslimattan önce kontrolHer sonuç size ulaşmadan önce kalite kontrolünden geçer ve onaylamadan önce sipariş sayfasında görürsünüz.
  • Ücretsiz revizyonlarBrifiniz kapsamında, paketin izin verdiği sayıda değişiklik isteyin.
  • 3 gün sonra onayTeslimattan sonraki 3 gün içinde işi onaylamaz veya değişiklik istemezseniz iş otomatik olarak onaylanır. Teslimattan sonra sipariş sohbetine yazarsanız sipariş bekletilir; yanıt verdikten sonra 3 günlük süreyi yeniden başlatabiliriz ve bunu sohbette bildiririz.
  • Yeniden yapım veya tam iadeSonuç brifinize uymuyorsa ve revizyonlar sorunu çözmediyse ya da iş teslim süresinin iki katından uzun sürerse sipariş sohbetine yazın: işi yeniden yaparız veya ödemenin tamamını iade ederiz.
Nasıl çalışır →

Sorular ve yanıtlar

Satın aldığım bir listede kullanabilir miyim?

Hayır. E-postalarınızı almayı kabul etmiş kendi kişileriniz içindir. Satın alınmış ya da toplanmış listeler e-posta servislerinin kurallarını ve birçok ülkede yasayı ihlal eder.

Kişileri servise yükler mi?

Hayır. Dosyayı oluşturur; onu e-posta pazarlama servisinizin hesabında içe aktarırsınız; servis orada kişilerin onay verdiğini doğrulamanızı da ister.

E-postaların var olduğunu kontrol edecek mi?

Her adresin doğru yazıldığını kontrol eder ve yaygın alan adı yazım hatalarını işaretler. Bir posta kutusunun var olup olmadığını yalnızca e-posta servisi bilir; e-posta pazarlama servisiniz gönderimden sonra geri dönen postaları bildirir.

Kişi listem güvende mi?

Bilgisayarınızda kalır: betiği kendiniz çalıştırırsınız ve biz yalnızca gönderdiğiniz uydurma satırları görürüz.

Yanıtınızı bulamadınız mı?

Paketler