Kontak untuk layanan newsletterPengembangan & Kustomisasi

Skrip Python yang mengubah ekspor kontak Anda menjadi CSV bersih yang siap diimpor ke layanan newsletter Anda

Biasanya selesai dalam 15 menitTermasuk revisiPemeriksaan kualitas
Paket
Perlindungan pembayaranSelengkapnya
  • Revisi dalam batas paket tidak dikenai biaya.
  • Jika Anda tidak merespons dalam 3 hari setelah penyerahan hasil, hasil kerja diterima secara otomatis.

Uang ditahan saat Anda membayar dan diteruskan hanya setelah Anda menerima hasil kerja.

Skrip Python yang mengubah ekspor kontak Anda menjadi CSV bersih yang siap diimpor ke layanan newsletter Anda

Contoh hasil

Contoh untuk paket Standar

Menggabungkan file penjualan bulanan 9 toko menjadi satu laporan Excel

Cara menjalankannya

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Folder: sales/2026-10, ditemukan 9 file
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 baris
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 baris
2026-11-02 09:14:04 WARN  shop-07.csv: 3 baris tanpa harga dilewati (baris 88, 412, 913)
2026-11-02 09:14:05 INFO  Selesai: 10.412 baris -> report-2026-10.xlsx (sheet "Penjualan" dan "Total")

Pengaturan, bukan kode

Nama kolom setiap toko disimpan di settings.ini, jadi toko baru atau kolom yang berganti nama cukup ditambahkan satu baris di sana:

[columns]
date = Tanggal, Tanggal penjualan, Hari
product = Produk, Barang, Nama
quantity = Qty, Jumlah, Pcs
price = Harga, Harga satuan

Sebagian kode

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Membaca file satu toko dan memberinya nama kolom laporan."""
    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}: tidak ada kolom untuk '{name}' (dicari: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

File: arsip ZIP berisi merge_sales.py (310 baris), settings.ini, requirements.txt, dan README tentang cara memasang Python, menjalankan skrip, dan arti setiap pesan di log. Klien menjalankannya di komputernya sendiri.

Klien: jaringan kecil 9 toko alat tulis; setiap toko mengirim penjualan bulanannya sebagai file CSV atau Excel, dengan nama kolom yang sedikit berbeda. Tugas: satu skrip yang membaca setiap file di sebuah folder, menyeragamkan kolomnya, dan menulis satu laporan Excel berisi semua penjualan serta sheet total per toko.

Klien dan semua datanya fiktif.

Tentang layanan ini

Kontak yang diekspor dari toko, CRM, atau pendaftaran acara jarang cocok dengan yang ingin diimpor layanan newsletter: nama kolom lain, nama depan dan belakang dalam satu sel, tag di tempat yang aneh, orang yang sudah berhenti berlangganan masih ada di daftar. Skrip Python ini membaca ekspor Anda dan menulis satu CSV bersih dengan susunan impor layanan Anda: nama dipisah jika perlu, field dan tag dipetakan, email yang formatnya rusak dan duplikat dikeluarkan, dan mulai Standar, hanya orang dengan tanda persetujuan yang dipertahankan dan yang sudah berhenti berlangganan dihapus, dengan file baris yang dikeluarkan untuk Anda periksa. Skrip ini untuk kontak Anda sendiri yang setuju menerima kabar dari Anda, bukan daftar yang dibeli atau di-scrape. Skrip berjalan di komputer Anda dan tidak terhubung ke layanan tersebut; Anda sendiri yang mengimpor file-nya.

Yang termasuk

  • Yang Anda dapatkanArsip ZIP berisi skrip Python, README dengan petunjuk langkah demi langkah, dan mulai Standar, file pengaturan dengan pemetaan field dan tag; kodenya juga ditampilkan di halaman pesanan.
  • Susunan layanan AndaSesuai templat impor atau contoh file-nya
  • Persetujuan dihormatiMulai Standar, hanya orang yang setuju, tanpa yang berhenti berlangganan
  • Duplikat dan salah ketik dikeluarkanAlamat dengan format rusak dan duplikat tidak dimasukkan
  • Baris yang dikeluarkan tetap disimpanFile terpisah yang menunjukkan apa yang dikeluarkan dan alasannya
  • Kode yang mudah dibacaDengan komentar, mudah menambah field nanti

Cara kerja

  1. 1
    ContohAnda mengirim baris karangan dari setiap ekspor dan format impor layanan Anda
  2. 2
    KodeKami menulis skrip dan panduan menjalankannya
  3. 3
    CobaAnda menjalankannya, memeriksa baris yang dikeluarkan, dan mengimpor daftar uji kecil
  4. 4
    RevisiAnda meminta revisi sesuai paket dan mengirim pesan error jika ada

Yang kami butuhkan dari Anda

Baris judul dan 10–20 baris setiap ekspor dengan nama dan email karangan tetapi dengan susunan yang sama, kolom mana yang menunjukkan persetujuan dan mana yang menunjukkan berhenti berlangganan, layanan newsletter yang Anda pakai dan templat impornya atau tautan ke halaman bantuan impornya, serta bagaimana tag atau segmen diatur. Bagaimana kontak dikumpulkan (toko Anda, formulir pendaftaran, acara). Jangan pernah mengirim daftar aslinya.

Kami akan menanyakan:

  • Dari mana kontak-kontak itu berasal?
  • Ke layanan newsletter mana Anda akan mengimpor?
  • Bagaimana persetujuan dicatat?
  • Apakah Anda membutuhkan tag atau segmen?

Bandingkan paket

PaketDasarSatu ekspor, satu formatRp 272.000StandarEkspor dengan pengaturanRp 561.000PremiumAlat kontakRp 1.139.000
Tenggat1 hari2 hari3 hari
Revisi123
Kodehingga 150 barishingga 400 barishingga 1.000 baris
File kode1hingga 3hingga 8
File pengaturanTidakYaYa
Pesan error yang jelas dan logTidakYaYa
Opsi menjalankan dan panduan menjalankannya terjadwalTidakTidakYa
Panduan instalasi dan menjalankan (README)YaYaYa
BahasaPythonPythonPython
Pesan DasarPesan StandarPesan Premium

Perlindungan pembayaran

Anda membayar saat memesan, tetapi uangnya diteruskan hanya untuk hasil kerja yang diterima.

  • Harga pastiHarga paket tidak berubah setelah Anda membayar.
  • Uang ditahanSaat Anda membayar, jumlahnya hanya ditahan. Dana diteruskan ke Dleex setelah Anda menerima hasil kerja.
  • Diperiksa sebelum penyerahanSetiap hasil melewati pemeriksaan kualitas sebelum sampai kepada Anda, dan Anda dapat melihatnya di halaman pesanan sebelum menerimanya.
  • Revisi gratisMinta revisi sesuai brief Anda sebanyak yang diizinkan paket.
  • Diterima setelah 3 hariJika dalam 3 hari setelah penyerahan hasil Anda tidak menerima hasil kerja maupun meminta revisi, hasil kerja diterima secara otomatis. Jika Anda menulis di chat pesanan setelah penyerahan hasil, pesanan akan menunggu; setelah kami menjawab, kami dapat memulai ulang hitungan 3 hari dan akan memberitahukannya di chat.
  • Dikerjakan ulang atau pengembalian dana penuhJika hasilnya tidak sesuai brief Anda dan revisi tidak memperbaikinya, atau pengerjaan memakan waktu lebih dari dua kali tenggatnya, tulis di chat pesanan: kami akan mengerjakan ulang atau mengembalikan pembayaran secara penuh.
Cara kerjanya →

Tanya jawab

Bisakah saya memakainya untuk daftar yang saya beli?

Tidak. Skrip ini untuk kontak Anda sendiri yang setuju menerima email Anda. Daftar yang dibeli atau di-scrape melanggar aturan layanan newsletter dan hukum di banyak negara.

Apakah skrip mengunggah kontak ke layanan tersebut?

Tidak. Skrip membuat file-nya; Anda mengimpornya di akun layanan newsletter Anda, yang juga akan meminta Anda mengonfirmasi bahwa kontak-kontak itu sudah setuju.

Apakah skrip akan memeriksa bahwa email-emailnya ada?

Skrip memeriksa bahwa setiap alamat ditulis dengan benar dan menandai salah ketik umum pada domain. Apakah sebuah kotak surat ada, hanya layanan email yang tahu, dan layanan newsletter Anda melaporkan bounce setelah pengiriman.

Apakah daftar kontak saya aman?

Daftar itu tetap di komputer Anda: Anda menjalankan skrip sendiri, dan kami hanya melihat baris karangan yang Anda kirim.

Tidak menemukan jawabannya?

Paket