Pelacakan Pesanan
Ini adalah serangkaian skrip Python yang dimaksudkan untuk menyederhanakan dan mengotomatiskan proses rekonsiliasi pesanan seseorang dengan kelompok pembelian. Pada dasarnya, ini mengotomatiskan pengambilan informasi pelacakan, mengunggah ke situs grup pembelian, dan rekonsiliasi pesanan setelah penggantian biaya. Tujuan utama dari skrip ini adalah agar seseorang dapat melihat satu Google Sheet dan segera mengetahui pesanan apa yang telah dilacak dengan benar dan diganti oleh kelompok pembeli, dan untuk memberikan pengguna alat untuk memperbaiki masalah apa pun yang mungkin timbul.
Apa Fungsinya
Ada dua tugas utama. Mereka adalah:
dapatkan_order_tracking.py:
Skrip ini melakukan hal berikut:
- Mengurai email pemberitahuan pengiriman yang belum dibaca dari 45 hari terakhir dari Amazon atau Best Buy.
- Mengurai serangkaian informasi dari email tersebut dan email terkait, termasuk nomor pelacakan, nomor pesanan, biaya pesanan, alamat email, URL pesanan, dan tanggal pengiriman, serta menyimpan informasi tersebut ke disk dan Drive.
- Unggah nomor pelacakan tersebut ke sistem pelacakan pesanan grup seperti Pointsmaker, MYS, atau USA.
- Kelompokkan pesanan atau nomor pelacakan yang digabungkan oleh Amazon atau Best Buy untuk rekonsiliasi nanti (misalnya, dua pesanan dikelompokkan bersama jika dikirim dalam pengiriman yang sama).
- Mengirimkan email kepada Anda (pengguna) daftar nomor pelacakan/pesanan yang ditemukan, untuk pemeriksaan kewarasan.
Jika karena alasan tertentu ia tidak dapat mengurai email, ia akan menandai email tersebut sebagai belum dibaca sehingga Anda dapat melihatnya secara manual nanti. Hal ini terkadang terjadi jika Amazon sedang lambat -- dalam kasus ini, tidak ada salahnya menjalankan skrip lagi.
rekonsiliasi.py
Ini adalah naskah untuk rekonsiliasi. Ini melakukan hal berikut:
- Dimuat dalam grup nomor pelacakan/pesanan dari
get_tracking_numbers.py
. - Mengisi biaya penggantian bila bisa (untuk grup seperti Pointsmaker, MYS, atau USA). Hal ini memerlukan akses ke situs web grup dan menguraikan pemetaan mulai dari nomor pelacakan hingga biaya penggantian.
- Kelompokkan pesanan berdasarkan pesanan pembelian (jika berlaku, hanya AS).
- Menerapkan penyesuaian manual (lihat "Keluaran Lembar" di bawah).
- Mengunggah hasil rekonsiliasi ke Google Sheet dalam format yang dapat dibaca manusia. Lihat "Output Lembar" di bawah untuk informasi lebih lanjut.
Keterbatasan
- Ini hanya akan berfungsi untuk satu akun email dalam satu waktu
- Ini hanya akan berfungsi untuk GMail
- Pengunggahan otomatis hanya berfungsi untuk AS dan situs yang format situsnya sama dengan Pointsmaker atau MYS
- Semua alamat harus berisi kunci yang secara unik mengidentifikasi kelompok pembeli mana yang memiliki alamat tersebut. Standarnya adalah bagian dari alamat grup.
Prasyarat
- Python3 dan pip3 (ini harus bersatu)
instruksi
Jika Anda menggunakan Windows, gunakan panduan ini daripada petunjuk ini, karena Windows agak sulit dan panduan ini jelas.
Jika Anda menggunakan Mac (OSX):
Buka terminal dan jalankan perintah berikut. Ini menginstal Homebrew (manajer paket), lalu menggunakan Homebrew untuk menginstal Git+Python, mengunduh proyek, lalu mengatur lingkungan Python.
cd ~
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install pyenv
brew install git
git clone https://github.com/gbrodman/order-tracking.git
cd order-tracking
pyenv install 3.7.4
pyenv global 3.7.4
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.bash_profile
source ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pip install -r requirements.txt
Di semua sistem operasi:
- Putuskan sambungan dari VPN apa pun yang mungkin mengganggu (mungkin menyebabkan masalah konektivitas jaringan atau tidak)
- Aktifkan IMAP di GMail--buka halaman Pengaturan, lalu tab "Penerusan dan POP/IMAP", lalu pastikan IMAP diaktifkan
- Salin config.yml.template ke config.yml
- Siapkan konfigurasi (lihat bagian "Konfigurasi" di bawah untuk info lebih lanjut)
- Jalankan
python get_tracking_numbers.py
diikuti dengan python reconcile.py
Konfigurasi
Berikut detail kolom di config.yml:
- Email dan kata sandinya harus berupa akun GMail -- khususnya, kata sandinya harus berupa kata sandi khusus aplikasi. Anda mungkin dapat mempertahankan konfigurasi IMAP dan SMTP tetap sama (kecuali Anda yakin bahwa Anda tidak boleh melakukan hal tersebut).
- Mulai Maret 2020, Kata sandi aplikasi tidak lagi didukung oleh Google. OAuth diperlukan untuk digunakan untuk masuk ke Gmail. Lihat detail di bawah tentang cara mengaturnya.
- Untuk setiap grup dalam 'grup', sertakan nama lengkap grup tersebut (untuk situs seperti MYS, ini harus berupa URL dikurangi bit ".com"). Sertakan kunci unik per grup (standarnya didasarkan pada alamat) yang hanya akan muncul di notifikasi pengiriman ke grup tersebut. Nama pengguna dan kata sandi harus ada di portal online grup sehingga kami dapat mengunggah nomor pelacakan dan mengumpulkan data rekonsiliasi.
- lookbackDays adalah seberapa jauh kami akan mencari email pengiriman Amazon yang belum dibaca di akun email Anda. Catatan: tautan pengiriman akan kedaluwarsa setelah 45 hari, jadi kami tidak boleh melewatinya
- baseSpreadsheetId rekonsiliasi harus berupa ID Google Sheet yang ada. Lihat bagian di bawah tentang cara memberikan izin yang benar pada sheet tersebut. ID dapat diambil dari URL, yaitu dalam bentuk "https://docs.google.com/spreadsheets/d/SHEET_ID"
- Bidang "driveFolderId" harus berupa ID folder Google Drive tempat kita akan menyimpan data persisten. Ini dapat diambil dari URL folder, yang berbentuk "https://drive.google.com/drive/folders/FOLDER_ID"
Konfigurasi dan Izin Spreadsheet / Drive
Kita perlu membuat dan menggunakan akun Google Cloud otomatis untuk menulis ke Drive dan Spreadsheet. Inilah cara kami melakukannya:
- Pertama, buat proyek Google Cloud di https://console.cloud.google.com
- Selanjutnya, buat akun layanan di Google Cloud dan dapatkan kredensialnya, dengan mengikuti langkah 1-5 di halaman ini. Pastikan untuk mencatat alamat email akun layanan -- alamat email tersebut harus sangat panjang, dan harus menyertakan ".gserviceaccount.com" di akhir.
- Saat Anda mengunduh file JSON kredensial, ganti namanya menjadi "creds.json" dan letakkan di direktori yang sama dengan skrip ini.
- Di situs konsol Google Cloud, gunakan panel navigasi kiri untuk membuka "API dan Layanan"
- Selanjutnya, klik "Aktifkan API dan Layanan". Ini akan membawa Anda ke perpustakaan API. Anda perlu mencari dan mengaktifkan "Google Drive API" dan "Google Sheets API". Untuk masing-masingnya, cari, klik istilahnya, dan aktifkan.
- Selanjutnya untuk rekonsiliasi Google Sheet dan folder Google Drive yang kita siapkan, pastikan sheet/folder tersebut dibagikan dengan akun layanan yang kita buat sebelumnya. Bagikan saja keduanya dengan alamat email yang diakhiri dengan ".gserviceaccount.com" (pastikan alamat tersebut memiliki izin pengeditan pada sheet dan folder).
- Untuk OAuth, buat kunci di https://support.google.com/cloud/answer/6158849?hl=en dan simpan sebagai client_secret.json di direktori yang sama dengan skrip ini.
Seharusnya begitu -- file "creds.json" akan memberikan skrip kemampuan untuk dijalankan sebagai akun layanan, dan kami telah memberikan izin akun layanan untuk hal-hal yang perlu ditulisinya.
Argumen
-
--headless
untuk dijalankan di browser tanpa kepala. Ini berguna jika Anda tidak peduli dengan apa yang dilakukan otomatisasi. -
--firefox
untuk dijalankan menggunakan Firefox/Geckodriver daripada Chrome -
--groups AB
hanya akan melakukan rekonsiliasi pada grup A dan B. Jika dihilangkan, akan dilakukan pada semua grup.
Keluaran Lembar
Tugas rekonsiliasi memiliki output yang terdiri dari dua tab di Google Sheet yang kita konfigurasikan sebelumnya. Tabnya adalah:
Rekonsiliasi
Ini adalah spreadsheet utama. Karena satu nomor pelacakan dapat terdiri dari beberapa pesanan dan satu pesanan dapat berisi beberapa nomor pelacakan, kami mengelompokkannya ke dalam pesanan berdasarkan cara pengiriman dibagi. Kolomnya adalah:
- Pesanan: ID Pesanan yang terdapat dalam grup ini
- Pelacakan: Nomor pelacakan yang terdapat dalam grup ini
- Jumlah yang Ditagih: Jumlah total yang ditagihkan kepada Anda untuk grup ini
- Jumlah yang Dikembalikan: Jumlah total yang ditampilkan situs grup pembelian untuk grup ini
- Tanggal Pengiriman Terakhir: Ini adalah tanggal pengiriman terakhir. Jika sudah lama sekali dan pengembalian dana pesanan kurang, Anda mungkin mengalami masalah.
- PO: Daftar pesanan pembelian (saat ini hanya untuk AS)
- Kelompok: kelompok pembeli
- Ke Email: email tujuan pengiriman email pengiriman/pesanan
- Penyesuaian Biaya Manual: Ini adalah cara untuk menyesuaikan perkiraan biaya penggantian untuk suatu pesanan. Jika Anda mengetahui bahwa suatu barang mendapat penggantian yang kurang karena alasan yang baik, Anda dapat menambahkan jumlah tersebut di sini. Kami berharap jumlah yang ditagih sama dengan jumlah yang diganti ditambah penyesuaian biaya manual ini. Ini disimpan jika Anda mengubahnya.
- Manual Override: Bidang manual lainnya, centang ini jika Anda yakin grup sudah benar -- bidang lainnya akan diabaikan dan ditandai sebagai terselesaikan
- Total Diff: Ini adalah selisih total antara jumlah yang ditagih dan diganti (ditambah penyesuaian manual). Hijau berarti jumlahnya sama atau penggantian telah dicentang, kuning berarti penggantian uang Anda berlebihan, dan merah berarti penggantian uang Anda kurang.
- Catatan: Catatan untuk penggunaan pribadi Anda
Pelacakan
Setiap baris pada lembar ini berhubungan dengan nomor pelacakan. Ini berisi pesanan untuk pelacakan tersebut dan informasi lain tentangnya, termasuk jumlah penggantian jika kami dapat menemukannya. Tab ini paling berguna dalam mencari tahu di mana tepatnya masalah terjadi, jika suatu kelompok salah memindai beberapa item.
Impor Laporan Amazon
Pertama, ekspor laporan pengiriman bisnis Amazon sebagai CSV (melalui bagian Analisis Bisnis di situs). Kemudian, unggah file CSV tersebut ke Google Drive dan buka sebagai file Spreadsheet. Catat ID sheet, yang dapat diambil dari URL sheet dengan cara yang sama seperti sebelumnya, yaitu "https://docs.google.com/spreadsheets/d/SHEET_ID". Perhatikan juga nama tabnya.
Kemudian jalankan python import_report.py
. Ia akan menanyakan ID lembar dan nama tab yang disebutkan di atas -- masukkan. Ia akan mencetak informasi tentang pelacakan yang diimpornya, dan juga akan mencetak setiap baris yang tidak dapat menemukan grup yang valid (catatan: alamat tidak diformat seperti "Kota, NEGARA" jadi untuk bagian ini saya sarankan menggunakan awal alamat sebagai kunci grup Anda, misalnya '123 Fake St' (tanpa tanda kutip) di konfigurasi grup Anda).
Impor Pesanan Manual
Terkadang, seseorang mungkin ingin menambahkan objek pelacakan ke datastore secara manual. Untuk melakukannya, jalankan skrip manual_input.py
. Jika Anda menjalankannya tanpa argumen, ia akan meminta serangkaian masukan (ini juga memungkinkan Anda menghapus objek pelacakan yang ada). Sebagian besar argumen bersifat opsional dan akan mencoba mengisi default yang wajar, tetapi bidang nomor pelacakan, nomor pesanan, dan grup wajib diisi.
Jika Anda ingin menjalankan input semua dalam satu langkah menambahkan objek pelacakan baru dalam bentuk paling sederhana, cukup jalankan sebagai satu perintah:
python manual_input.py -a -t TRACKING_NUMBER -g GROUP -o ORDER_NUMBER
misalnya
python manual_input.py -a -t TBA1234567890 -g mysbuyinggroup -o 123-1234567-1234567
Sumbangan
Perangkat lunak ini sepenuhnya gratis, berlisensi di bawah Lisensi Publik Umum GNU Affero. Namun, jika Anda merasa ingin mendonasikan sejumlah uang kepada saya, silakan kirimkan uang berapa pun melalui Paypal ke https://paypal.me/GustavBrodman