تتبع الطلب
هذه مجموعة من نصوص بايثون المخصصة لتبسيط وأتمتة عملية التوفيق بين أوامر الفرد ومجموعات الشراء. بمعنى أساسي، فهي تعمل على أتمتة عملية استرجاع معلومات التتبع، وتحميلها إلى مواقع مجموعات الشراء، وتسوية الطلب بعد السداد. الأغراض الرئيسية لهذه النصوص البرمجية هي أنه يمكن للمرء إلقاء نظرة على ورقة Google واحدة ومعرفة الطلبات التي تم تتبعها بشكل صحيح وسدادها من قبل مجموعات الشراء على الفور، ومنح المستخدم الأدوات اللازمة لإصلاح أي مشكلات قد تنشأ.
ماذا يفعل هذا
هناك مهمتان رئيسيتان. هم:
get_order_tracking.py:
يقوم هذا البرنامج النصي بما يلي:
- يقوم بتوزيع رسائل البريد الإلكتروني غير المقروءة الخاصة بإشعارات الشحن خلال آخر 45 يومًا من Amazon أو Best Buy.
- يوزع مجموعة من المعلومات من رسائل البريد الإلكتروني ورسائل البريد الإلكتروني المرتبطة بها، بما في ذلك رقم (أرقام) التتبع ورقم (أرقام) الطلب وتكاليف الطلب وعناوين البريد الإلكتروني وعناوين URL للطلب وتواريخ الشحن ويحفظ تلك المعلومات على القرص وفي Drive.
- يقوم بتحميل أرقام التتبع هذه إلى أنظمة تتبع الطلبات لمجموعات مثل Pointsmaker أو MYS أو USA.
- تجميع الطلبات أو أرقام التتبع التي تم تجميعها معًا بواسطة Amazon أو Best Buy لتسويتها لاحقًا (على سبيل المثال، يتم تجميع طلبين معًا إذا تم شحنهما في نفس الشحنة).
- يرسل إليك (المستخدم) بالبريد الإلكتروني قائمة بأرقام التتبع/الطلب التي عثر عليها، للتحقق من سلامتها.
إذا لم يتمكن من تحليل رسالة بريد إلكتروني لسبب ما، فسيتم وضع علامة على البريد الإلكتروني كغير مقروءة حتى تتمكن من الاطلاع عليها يدويًا لاحقًا. يحدث هذا أحيانًا إذا كان أداء Amazon بطيئًا - في هذه الحالات، لا يوجد أي ضرر في تشغيل البرنامج النصي مرة أخرى.
reconcile.py
هذا هو السيناريو للمصالحة. يقوم بما يلي:
- يتم التحميل في مجموعات أرقام التتبع/الطلبات من
get_tracking_numbers.py
. - تعبئة التكاليف المستردة عندما يكون ذلك ممكنًا (لمجموعات مثل Pointsmaker أو MYS أو USA). يستلزم ذلك الدخول إلى موقع الويب الخاص بالمجموعة وتحليل التعيين بدءًا من رقم التتبع وحتى التكلفة المستردة.
- تجميع الطلبات معًا حسب أمر الشراء (إن أمكن، الولايات المتحدة الأمريكية فقط).
- يطبق التعديلات اليدوية (راجع "إخراج الأوراق" أدناه).
- تحميل مخرجات التسوية إلى ورقة Google بتنسيق يمكن قراءته بواسطة الإنسان. راجع "إخراج الأوراق" أدناه لمزيد من المعلومات.
القيود
- لن يعمل هذا إلا لحساب بريد إلكتروني واحد في كل مرة
- هذا سوف يعمل فقط مع GMail
- يعمل التحميل التلقائي فقط في الولايات المتحدة الأمريكية والمواقع التي تكون مواقعها الإلكترونية بنفس تنسيق Pointsmaker أو MYS
- يجب أن تحتوي جميع العناوين على مفتاح يحدد بشكل فريد مجموعة الشراء التي ينتمي إليها العنوان. الافتراضي هو جزء من عنوان المجموعة.
المتطلبات الأساسية
- Python3 وpip3 (يجب أن يجتمعا معًا)
تعليمات
إذا كنت تستخدم نظام Windows، فاستخدم هذا الدليل بدلاً من هذه التعليمات، حيث أن نظام Windows صعب بعض الشيء وهذا الدليل واضح.
إذا كنت تستخدم نظام التشغيل Mac (OSX):
افتح Terminal وقم بتشغيل الأوامر التالية. يقوم هؤلاء بتثبيت 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 هو المدى الذي سنبحث فيه في حساب بريدك الإلكتروني عن رسائل البريد الإلكتروني الخاصة بالشحن غير المقروءة من أمازون. ملحوظة: تنتهي صلاحية روابط الشحن بعد 45 يومًا لذا لا ينبغي أن نتجاوز ذلك
- يجب أن يكون معرف قاعدة بيانات التسوية هو معرف ورقة Google الموجودة. راجع القسم أدناه حول كيفية منح الأذونات الصحيحة لتلك الورقة. يمكن استرداد المعرف من عنوان URL، والذي يكون بالصيغة "https://docs.google.com/spreadsheets/d/SHEET_ID"
- يجب أن يكون الحقل "driveFolderId" هو معرف مجلد Google Drive الذي سنقوم بتخزين البيانات الدائمة فيه. يمكن استرجاع ذلك من عنوان URL للمجلد، والذي يكون بالصيغة "https://drive.google.com/drive/folders/FOLDER_ID"
الأوراق / تكوين محرك الأقراص والأذونات
نحن بحاجة إلى إنشاء واستخدام حساب Google Cloud آلي للكتابة إلى Drive وSheets. وإليك كيف نفعل ذلك:
- أولاً، قم بإنشاء مشروع Google Cloud على https://console.cloud.google.com
- بعد ذلك، قم بإنشاء حساب الخدمة في Google Cloud واحصل على بيانات الاعتماد الخاصة به، باتباع الخطوات من 1 إلى 5 في هذه الصفحة. تأكد من ملاحظة عنوان البريد الإلكتروني لحساب الخدمة - يجب أن يكون طويلًا جدًا، ويجب أن يتضمن ".gserviceaccount.com" في النهاية.
- عند تنزيل ملف بيانات الاعتماد JSON، أعد تسميته "creds.json" وضعه في نفس الدليل مثل هذه البرامج النصية.
- في موقع ويب Google Cloud Console، استخدم جزء التنقل الأيمن للانتقال إلى "واجهات برمجة التطبيقات والخدمات"
- بعد ذلك، انقر فوق "تمكين واجهات برمجة التطبيقات والخدمات". سينقلك هذا إلى مكتبة API. تحتاج إلى البحث عن "Google Drive API" و"Google Sheets API" وتمكينهما. لكل منها، ابحث عنها، وانقر فوق المصطلح، وقم بتمكينه.
- بعد ذلك، من أجل التوفيق بين ورقة Google ومجلد Google Drive الذي قمنا بإعداده، تأكد من مشاركة الورقة/المجلد مع حساب الخدمة الذي أنشأناه من قبل. ما عليك سوى مشاركتهما باستخدام عنوان البريد الإلكتروني الذي ينتهي بـ ".gserviceaccount.com" (تأكد من أن العنوان لديه أذونات التحرير في الورقة والمجلد).
- بالنسبة إلى OAuth، أنشئ مفتاحًا على https://support.google.com/cloud/answer/6158849?hl=ar وقم بتخزينه كـ Client_secret.json في نفس الدليل مثل هذه البرامج النصية.
ينبغي أن يكون الأمر كذلك - سيمنح ملف "creds.json" البرامج النصية القدرة على التشغيل كحساب خدمة، وقد منحنا أذونات حساب الخدمة للأشياء التي يحتاج إلى الكتابة إليها.
الحجج
-
--headless
للتشغيل في متصفح بلا رأس. يعد هذا مفيدًا إذا كنت لا تهتم برؤية ما تفعله الأتمتة. -
--firefox
للتشغيل باستخدام Firefox/Geckodriver بدلاً من Chrome -
--groups AB
سيتم تشغيل التسوية على المجموعتين A وB فقط. وإذا تم حذفها، فسيتم تشغيلها على جميع المجموعات.
إخراج الأوراق
تحتوي مهمة التسوية على مخرجات تتكون من علامتي تبويب في ورقة Google التي قمنا بتكوينها مسبقًا. علامات التبويب هي:
مصالحة
هذا هو جدول البيانات الرئيسي. نظرًا لأن رقم التتبع الواحد يمكن أن يتكون من طلبات متعددة ويمكن أن يحتوي الطلب الواحد على أرقام تتبع متعددة، فإننا نقوم بتجميعها في طلبات بناءً على كيفية تقسيم الشحنات. الأعمدة هي:
- الطلبات: معرفات الطلبات الموجودة في هذه المجموعة
- التتبعات: أرقام التتبع الموجودة في هذه المجموعة
- المبلغ المفوتر: إجمالي المبلغ الذي تم تحصيله منك مقابل هذه المجموعة
- المبلغ المسترد: المبلغ الإجمالي الذي تعرضه مواقع مجموعات الشراء لهذه المجموعة
- تاريخ آخر شحنة: هذا هو تاريخ آخر شحنة. إذا مر وقت طويل ولم يتم سداد تكاليف الطلب، فمن المحتمل أن تكون لديك مشكلة.
- POs: قائمة أوامر الشراء (حاليًا للولايات المتحدة الأمريكية فقط)
- المجموعة: مجموعة الشراء
- إلى البريد الإلكتروني: البريد الإلكتروني الذي تم إرسال رسائل البريد الإلكتروني الخاصة بالشحن/الطلب إليه
- تعديل التكلفة يدويًا: هذه طريقة لضبط التكلفة المستردة المتوقعة لأحد الطلبات. إذا كنت تعلم أن هناك نقصًا في سداد أحد العناصر لسبب وجيه، فيمكنك إضافة هذا المبلغ هنا. نتوقع أن يكون المبلغ المفوتر مساويًا للمبلغ المسترد بالإضافة إلى تعديل التكلفة اليدوي هذا. يتم حفظ هذا إذا قمت بتغييره.
- التجاوز اليدوي: حقل يدوي آخر، حدد هذا الحقل إذا كنت متأكدًا من أن المجموعة تبدو صحيحة -- فسوف تتجاهل أي شيء آخر وتضع علامة "تم الحل"
- إجمالي الفرق: هذا هو الفرق الإجمالي بين المبلغ المفوتر والمبلغ المسترد (بالإضافة إلى التعديلات اليدوية). اللون الأخضر يعني أن المبالغ كانت متساوية أو تم التحقق من التجاوز، والأصفر يعني أنه تم تعويضك بشكل زائد، والأحمر يعني أنك لم تحصل على تعويض كاف.
- ملاحظات: ملاحظات للاستخدام الشخصي الخاص بك
تتبعات
يتوافق كل صف في هذه الورقة مع رقم التتبع. ويحتوي على الطلب (الطلبات) لهذا التتبع ومعلومات أخرى عنه، بما في ذلك المبلغ المسترد إذا تمكنا من العثور عليه. تعتبر علامة التبويب هذه مفيدة للغاية في معرفة مكان حدوث المشكلة بالضبط، إذا أخطأت المجموعة في فحص بعض العناصر.
استيراد تقرير أمازون
أولاً، قم بتصدير تقرير شحنات أعمال أمازون كملف CSV (من خلال قسم تحليلات الأعمال بالموقع). بعد ذلك، قم بتحميل ملف CSV هذا إلى Google Drive وافتحه كملف جداول بيانات. لاحظ معرف الورقة، الذي يمكن استرجاعه من عنوان URL للورقة بنفس الطريقة السابقة، أي "https://docs.google.com/spreadsheets/d/SHEET_ID". لاحظ أيضًا اسم علامة التبويب.
ثم قم بتشغيل python import_report.py
. سيطلب منك معرف الورقة واسم علامة التبويب المذكورين أعلاه - أدخلهما. وسيطبع معلومات حول التتبعات التي يستوردها، وسيطبع أيضًا أي صفوف لم يتمكن من العثور على مجموعة صالحة لها (ملاحظة: لم يتم تنسيق العنوان مثل "City, STATE" لذا أوصي في هذا القسم باستخدام بدايات العناوين كمفاتيح مجموعتك، على سبيل المثال "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