訂單追蹤
這是一組 Python 腳本,旨在簡化和自動化與採購團體核對訂單的流程。從基本意義上講,它可以自動檢索追蹤資訊、上傳到購買團體的網站以及報銷後的訂單核對。這些腳本的主要目的是讓人們可以查看一張 Google 試算表並立即了解哪些訂單已被購買團體正確追蹤和報銷,並為用戶提供解決可能出現的任何問題的工具。
這是做什麼的
主要任務有兩個。他們是:
取得訂單追蹤.py:
該腳本執行以下操作:
- 解析過去 45 天內來自 Amazon 或 Best Buy 的未讀出貨通知電子郵件。
- 從這些電子郵件和關聯電子郵件中解析出一組訊息,包括追蹤編號、訂單編號、訂單成本、電子郵件地址、訂單 URL 和發貨日期,並將該資訊保存到磁碟和雲端硬碟。
- 將這些追蹤號碼上傳到 Pointsmaker、MYS 或 USA 等組織的訂單追蹤系統。
- 將由 Amazon 或 Best Buy 捆綁在一起的訂單或追蹤號碼分組在一起,以便以後進行核對(例如,如果兩個訂單在同一批貨中發貨,則它們會分組在一起)。
- 透過電子郵件向您(使用者)發送找到的追蹤/訂單號碼列表,以進行完整性檢查。
如果由於某種原因無法解析電子郵件,它會將電子郵件標記為未讀,以便您稍後可以手動查看。如果亞馬遜運行緩慢,有時會發生這種情況 - 在這種情況下,再次運行腳本並沒有什麼壞處。
協調.py
這是和解的腳本。它執行以下操作:
- 從
get_tracking_numbers.py
載入追蹤號碼/訂單組。 - 盡可能填寫報銷費用(對於 Pointsmaker、MYS 或 USA 等團體)。這需要進入該組織的網站並解析從追蹤號碼到報銷費用的映射。
- 按採購訂單將訂單分組在一起(如果適用,僅限美國)。
- 應用手動調整(請參閱下面的“圖紙輸出”)。
- 以人類可讀的格式將調節輸出上傳到 Google 試算表。有關詳細信息,請參閱下面的“工作表輸出”。
限制
- 這次僅適用於一個電子郵件帳戶
- 這僅適用於 GMail
- 自動上傳僅適用於美國以及網站格式與 Pointsmaker 或 MYS 相同的網站
- 所有位址都必須包含唯一標識該位址屬於哪個購買組的金鑰。預設值是群組位址的一部分。
先決條件
指示
如果您使用的是 Windows,請使用本指南而不是這些說明,因為 Windows 有點困難,而本指南很清楚。
如果您使用的是 Mac (OSX):
打開終端機並執行以下命令。他們安裝 Homebrew(一個套件管理器),然後使用 Homebrew 安裝 Git+Python,下載項目,然後設定 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
在所有作業系統中:
- 中斷與任何可能幹擾的 VPN 的連線(它們可能會或可能不會導致您出現一些網路連線問題)
- 在 GMail 中啟用 IMAP - 前往「設定」頁面,然後前往「轉址和 POP/IMAP」選項卡,然後確保已啟用 IMAP
- 將 config.yml.template 複製到 config.yml
- 設定配置(有關詳細信息,請參閱下面的“配置”部分)
- 運行
python get_tracking_numbers.py
然後運行python reconcile.py
配置
以下是 config.yml 上欄位的詳細資訊:
- 電子郵件和密碼應該是 GMail 帳戶 - 具體來說,密碼應該是應用程式特定的密碼。您可以將 IMAP 和 SMTP 設定保持不變(除非您確定不應該這麼做)。
- 自 2020 年 3 月起,Google 不再支援應用程式密碼。登入 Gmail 需要使用 OAuth。請參閱下面有關如何設定的詳細資訊。
- 對於「groups」中的每個群組,請包含該群組的全名(對於像 MYS 這樣的網站,這應該是 URL 減去「.com」位元)。每個群組包含一個唯一的密鑰(預設基於地址),該密鑰僅出現在向該群組發送的運送通知中。使用者名稱和密碼應位於該團體的線上入口網站,以便我們可以上傳追蹤號碼並抓取對帳資料。
- LookbackDays 是我們在您的電子郵件帳戶中搜尋未讀的亞馬遜發貨電子郵件的時間。注意:發貨連結將在 45 天後過期,因此我們不應超過此期限
- 調節 baseSpreadsheetId 應為現有 Google 試算表的 ID。請參閱下面的部分,以了解如何向該工作表授予正確的權限。可從 URL 檢索 ID,其格式為“https://docs.google.com/spreadsheets/d/SHEET_ID”
- 「driveFolderId」欄位應該是我們將儲存持久資料的 Google Drive 資料夾的 ID。這可以從資料夾的 URL 中檢索,其格式為“https://drive.google.com/drive/folders/FOLDER_ID”
表/驅動器配置和權限
我們需要建立並使用自動化的 Google Cloud 帳戶來寫入雲端硬碟和表格。我們是這樣做的:
- 首先,在 https://console.cloud.google.com 建立一個 Google Cloud 項目
- 接下來,請按照本頁上的步驟 1-5 在 Google Cloud 中建立服務帳戶並取得其憑證。請務必記下服務帳戶的電子郵件地址 - 它應該很長,並且末尾應包含“.gserviceaccount.com”。
- 下載憑證 JSON 檔案時,將其重新命名為「creds.json」並將其放在與這些腳本相同的目錄中。
- 在 Google Cloud 控制台網站中,使用左側導覽窗格前往“API 和服務”
- 接下來,按一下「啟用 API 和服務」。這將帶您進入 API 庫。您需要搜尋並啟用“Google Drive API”和“Google Sheets API”。對於每個,搜尋它,按一下該術語,然後啟用它。
- 接下來,對於我們設定的協調 Google 工作表和 Google 雲端硬碟資料夾,請確保與我們先前建立的服務帳戶共用工作表/資料夾。只需使用以“.gserviceaccount.com”結尾的電子郵件地址共用它們(確保該位址對工作表和資料夾具有編輯權限)。
- 對於 OAuth,請在 https://support.google.com/cloud/answer/6158849?hl=en 上建立金鑰,並將其作為 client_secret.json 儲存在與這些腳本相同的目錄中。
應該是這樣——「creds.json」檔案將使腳本能夠作為服務帳戶運行,並且我們已經向服務帳戶授予了它需要寫入的內容的權限。
論點
--headless
在無頭瀏覽器中運作。如果您不關心自動化正在做什麼,這非常有用。-
--firefox
使用 Firefox/Geckodriver 而不是 Chrome 運行 --groups AB
將僅對 A 組和 B 組運行協調。
紙張輸出
協調任務的輸出由我們先前配置的 Google Sheet 中的兩個選項卡組成。這些選項卡是:
和解
這是主要的電子表格。由於一個追蹤號碼可以包含多個訂單,並且一個訂單可以包含多個追蹤號碼,因此我們根據貨件的劃分方式將它們分組為訂單。這些列是:
- 訂單:該組中包含的訂單 ID
- 追蹤:該組中包含的追蹤號碼
- 計費金額:您為此組支付的總金額
- 報銷金額:購買團體網站為該團體顯示的總金額
- 最後出貨日期:這是最近出貨的日期。如果是很久以前的事,而且訂單的補償不足,那麼您可能遇到了問題。
- PO:採購訂單清單(目前僅適用於美國)
- 團體:採購團
- 收件者電子郵件:運送/訂單電子郵件發送到的電子郵件
- 手動成本調整:這是調整訂單預期報銷成本的一種方法。如果您知道某件商品因合理原因而報銷不足,您可以在此處新增該金額。我們預計計費金額等於報銷金額加上此手動成本調整。如果您更改它,則會儲存它。
- 手動覆蓋:另一個手動字段,如果您確定該群組看起來正確,請檢查此項目 - 它將忽略其他任何內容並標記為已解決
- 總差異:這是計費金額和報銷金額之間的總差異(加上手動調整)。綠色表示金額相等或已檢查超額,黃色表示您報銷超額,紅色表示您報銷不足。
- 註:供您個人使用的註釋
追蹤記錄
此表上的每一行對應一個追蹤號碼。它包含該追蹤的訂單以及相關的其他信息,包括報銷金額(如果我們能找到)。如果某個群組誤掃描了某些項目,則此標籤對於準確找出問題發生的位置非常有用。
亞馬遜報告導入
首先,將亞馬遜業務出貨報告匯出為 CSV(透過網站的業務分析部分)。然後,將該 CSV 檔案上傳到 Google 雲端硬碟並將其作為表格檔案開啟。請注意工作表 ID,它可以像以前一樣從工作表 URL 中檢索,即「https://docs.google.com/spreadsheets/d/SHEET_ID」。另請注意選項卡名稱。
然後,運行python import_report.py
。它會詢問您前面提到的工作表 ID 和選項卡名稱 - 將它們放入。不像“城市,州”,因此對於本節,我建議使用地址的開頭作為組鍵,例如組配置中的“123 Fake St”(不帶引號)。
手動訂單匯入
有時,人們可能希望手動將追蹤對像新增至資料儲存體。為此,請執行manual_input.py
腳本。如果您不帶參數運行它,它將要求您提供一系列輸入(它還允許您刪除現有的追蹤對象)。大多數參數都是可選的,它將嘗試填寫合理的預設值,但追蹤編號、訂單號碼和群組欄位是必需的。
如果您希望一步運行所有輸入,以最簡單的形式添加新的追蹤對象,只需作為一個命令運行:
python manual_input.py -a -t TRACKING_NUMBER -g GROUP -o ORDER_NUMBER
例如
python manual_input.py -a -t TBA1234567890 -g mysbuyinggroup -o 123-1234567-1234567
捐款
該軟體完全免費,根據 GNU Affero 通用公共授權獲得許可。但是,如果您想向我捐贈一些錢,請隨時透過 Paypal 發送任何金額至 https://paypal.me/GustavBrodman