Отслеживание заказов
Это набор Python-скриптов, предназначенных для оптимизации и автоматизации процесса сверки заказов с группами закупок. По сути, он автоматизирует получение информации отслеживания, загрузку на сайты групп закупок и сверку заказов после возмещения. Основная цель этих скриптов состоит в том, чтобы можно было просмотреть одну таблицу Google и сразу узнать, какие заказы были должным образом отслежены и возмещены группами покупателей, а также предоставить пользователю инструменты для устранения любых проблем, которые могут возникнуть.
Что это делает
Есть две основные задачи. Они есть:
get_order_tracking.py:
Этот скрипт делает следующее:
- Анализирует непрочитанные электронные письма с уведомлениями о доставке за последние 45 дней от Amazon или Best Buy.
- Анализирует набор информации из этих электронных писем и связанных с ними электронных писем, включая номера отслеживания, номера заказов, стоимость заказа, адреса электронной почты, URL-адреса заказов и даты доставки, и сохраняет эту информацию на диске и на Диске.
- Загружает эти номера отслеживания в системы отслеживания заказов таких групп, как Pointsmaker, MYS или USA.
- Группирует вместе заказы или номера отслеживания, которые Amazon или Best Buy объединяют для последующей сверки (например, два заказа группируются вместе, если они отправляются в одной отправке).
- Отправляет вам (пользователю) по электронной почте список найденных им номеров отслеживания/заказов для проверки работоспособности.
Если по какой-то причине он не может проанализировать электронное письмо, он пометит его как непрочитанное, чтобы вы могли просмотреть его вручную позже. Иногда это происходит, если Amazon работает медленно — в таких случаях повторный запуск сценария не помешает.
примирить.py
Это сценарий примирения. Он делает следующее:
- Загружает группы номеров отслеживания/заказов из
get_tracking_numbers.py
. - По возможности заполняет возмещаемые расходы (для таких групп, как Pointsmaker, MYS или USA). Это влечет за собой посещение веб-сайта группы и анализ сопоставления номера отслеживания с возмещаемыми расходами.
- Группирует заказы по заказу на поставку (если применимо, только для США).
- Применяет ручные настройки (см. «Вывод листов» ниже).
- Загружает результаты сверки в Google Sheet в удобочитаемом формате. Дополнительную информацию см. в разделе «Вывод листов» ниже.
Ограничения
- Это будет работать только для одной учетной записи электронной почты одновременно.
- Это будет работать только для GMail
- Автоматическая загрузка работает только для США и сайтов, веб-сайты которых имеют тот же формат, что и Pointsmaker или MYS.
- Все адреса должны содержать ключ, который однозначно определяет, к какой группе покупателей принадлежит адрес. По умолчанию это часть адреса группы.
Предварительные условия
- Python3 и pip3 (они должны объединиться)
Инструкции
Если вы используете 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-сетей, которые могут мешать (они могут вызвать или не вызвать проблемы с сетевым подключением).
- Включите IMAP в GMail: перейдите на страницу настроек, затем вкладку «Пересылка и POP/IMAP» и убедитесь, что IMAP включен.
- Скопируйте config.yml.template в config.yml.
- Настройте конфигурацию (дополнительную информацию см. в разделе «Конфигурация» ниже).
- Запустите
python get_tracking_numbers.py
, а затем python reconcile.py
Конфигурация
Вот подробности полей в config.yml:
- Электронная почта и пароль должны быть учетной записью GMail, в частности, паролем должен быть пароль для конкретного приложения. Скорее всего, вы можете сохранить конфигурацию IMAP и SMTP одинаковой (если вы точно не уверены, что не следует этого делать).
- С марта 2020 года пароли приложений больше не поддерживаются Google. OAuth необходим для входа в Gmail. Подробности о том, как это настроить, смотрите ниже.
- Для каждой группы в разделе «группы» укажите полное имя группы (для таких сайтов, как MYS, это должен быть URL-адрес без бита «.com»). Включите уникальный ключ для каждой группы (по умолчанию зависит от адреса), который будет отображаться только в уведомлениях о доставке в эту группу. Имя пользователя и пароль должны быть указаны на онлайн-портале группы, чтобы мы могли загружать номера отслеживания и собирать данные сверки.
- LookbackDays — это то, как далеко в вашей учетной записи электронной почты мы будем искать непрочитанные электронные письма Amazon с доставкой. Примечание. Срок действия ссылок на доставку истекает через 45 дней, поэтому не следует пропускать этот срок.
- Базовый идентификатор таблицы сверки должен быть идентификатором существующей таблицы Google. См. раздел ниже о том, как предоставить правильные разрешения этому листу. Идентификатор можно получить из URL-адреса, который имеет вид «https://docs.google.com/spreadsheets/d/SHEET_ID».
- Поле «driveFolderId» должно содержать идентификатор папки Google Диска, в которой мы будем хранить постоянные данные. Его можно получить по URL-адресу папки, который имеет вид «https://drive.google.com/drive/folders/FOLDER_ID».
Таблицы / Конфигурация и разрешения накопителя
Нам нужно создать и использовать автоматизированную учетную запись Google Cloud для записи на Диск и в Таблицы. Вот как мы это делаем:
- Сначала создайте проект Google Cloud по адресу https://console.cloud.google.com.
- Затем создайте сервисную учетную запись в Google Cloud и получите для нее учетные данные, выполнив шаги 1–5 на этой странице. Обязательно запишите адрес электронной почты учетной записи службы — он должен быть очень длинным и в конце должен содержать «.gserviceaccount.com».
- Загрузив JSON-файл учетных данных, переименуйте его в creds.json и поместите в тот же каталог, что и эти сценарии.
- На веб-сайте консоли Google Cloud используйте левую панель навигации, чтобы перейти к разделу «API и службы».
- Далее нажмите «Включить API и службы». Вы попадете в библиотеку API. Вам необходимо найти и включить «API Google Диска» и «API Google Таблиц». Для каждого найдите его, щелкните термин и включите его.
- Далее, для согласования Google Sheet и папки Google Drive, которую мы настроили, обязательно поделитесь листом/папкой с учетной записью службы, которую мы создали ранее. Просто поделитесь ими обоими, указав адрес электронной почты, который заканчивается на «.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, которую мы настроили ранее. Вкладки:
Примирение
Это основная таблица. Поскольку один номер отслеживания может состоять из нескольких заказов, а один заказ может содержать несколько номеров отслеживания, мы группируем их в заказы в зависимости от того, как были разделены поставки. Столбцы:
- Заказы: идентификаторы заказов, содержащиеся в этой группе.
- Отслеживание: номера отслеживания, содержащиеся в этой группе.
- Сумма к оплате: общая сумма, которую вы заплатили за эту группу.
- Возмещенная сумма: общая сумма, отображаемая на сайтах групп покупателей для этой группы.
- Дата последней отгрузки: это дата последней отгрузки. Если это было давно и заказ не оплачен, вероятно, у вас возникла проблема.
- Заказы на поставку: список заказов на поставку (в настоящее время только для США).
- Группа: группа покупателей
- На электронную почту: адрес электронной почты, на который были отправлены электронные письма о доставке/заказе.
- Корректировка стоимости вручную. Это способ корректировки ожидаемой возмещаемой стоимости заказа. Если вы знаете, что по уважительной причине стоимость товара была возмещена недостаточно, вы можете добавить эту сумму здесь. Мы ожидаем, что выставленный счет будет равен возмещенной сумме плюс корректировка затрат вручную. Это сохраняется, если вы его измените.
- Ручное переопределение: еще одно поле, устанавливаемое вручную. Проверьте это, если вы уверены, что группа выглядит правильно — все остальное будет проигнорировано и отмечено как решенное.
- Общая разница: это общая разница между выставленным счетом и возмещенной суммой (плюс корректировки вручную). Зеленый цвет означает, что суммы были равны или было отмечено переопределение, желтый означает, что вам была возмещена чрезмерная сумма, а красный означает, что вам была возмещена недостаточная сумма.
- Примечания: Примечания для личного использования.
Отслеживание
Каждая строка на этом листе соответствует номеру отслеживания. Он содержит заказы для этого отслеживания и другую информацию о нем, включая сумму возмещения, если мы сможем ее найти. Эта вкладка наиболее полезна для выяснения того, где именно возникла проблема, если группа неправильно отсканировала какой-либо элемент.
Импорт отчетов Amazon
Сначала экспортируйте отчет о бизнес-поставках Amazon в формате CSV (через раздел «Бизнес-аналитика» на сайте). Затем загрузите этот CSV-файл на Google Диск и откройте его как файл Таблиц. Обратите внимание на идентификатор листа, который можно получить из URL-адреса листа так же, как и раньше, то есть «https://docs.google.com/spreadsheets/d/SHEET_ID». Также обратите внимание на название вкладки.
Затем запустите python import_report.py
. Он запросит у вас вышеупомянутый идентификатор листа и имя вкладки — введите их. Он распечатает информацию об импортируемых отслеживаниях, а также распечатает любые строки, для которых не удалось найти действительную группу (примечание: адрес не форматируется как «Город, ШТАТ», поэтому в этом разделе я рекомендую использовать начало адресов в качестве групповых ключей, например «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 General Public License. Однако, если вы чувствуете, что хотите пожертвовать мне немного денег, смело отправляйте любую сумму денег через Paypal на адрес https://paypal.me/GustavBrodman.