Ad Manager SOAP API هي واجهة برمجة تطبيقات لقراءة وكتابة بيانات Ad Manager وعرض التقارير. إذا كان بإمكانك نقل البيانات، ننصحك باستخدام واجهة برمجة التطبيقات Ad Manager API (الإصدار التجريبي). ومع ذلك، تكون إصدارات SOAP API في "مدير إعلانات Google" متوافقة مع مراحل حياتها المعتادة. لمزيد من المعلومات، يُرجى الاطّلاع على جدول إيقاف واجهة برمجة التطبيقات SOAP في "مدير إعلانات Google" نهائيًا.
يوضّح الدليل التالي الاختلافات بين واجهة برمجة التطبيقات SOAP لـ "مدير إعلانات Google" وواجهة برمجة التطبيقات Ad Manager API (الإصدار التجريبي).
التعلُّم
تتضمّن طُرق خدمة SOAP API العادية في "مدير إعلانات Google" مفاهيم مماثلة
في Ad Manager API. تتضمّن Ad Manager API أيضًا طُرقًا لقراءة
الكيانات الفردية. يعرض الجدول التالي مثالاً على تعيين Order
methods:
طريقة SOAP | طرق REST |
---|---|
getOrdersByStatement
|
networks.orders.get networks.orders.list |
مصادقة
لتسجيل الدخول باستخدام Ad Manager API (الإصدار التجريبي)، يمكنك استخدام بيانات اعتماد Ad Manager SOAP API الحالية أو إنشاء بيانات اعتماد جديدة. في أيّ من الخيارَين، يجب أولاً تفعيل Ad Manager API في مشروعك على Google Cloud. لمزيد من التفاصيل، يُرجى الاطّلاع على المصادقة.
إذا كنت تستخدِم مكتبة عملاء، يمكنك إعداد بيانات الاعتماد التلقائية للتطبيق من خلال
ضبط متغيّر البيئة GOOGLE_APPLICATION_CREDENTIALS
على مسار
ملف مفتاح حساب الخدمة. لمزيد من التفاصيل، يُرجى الاطّلاع على
آلية عمل "بيانات الاعتماد التلقائية للتطبيق".
إذا كنت تستخدم بيانات اعتماد التطبيق المثبَّت، أنشئ ملف JSON بالتنسيق التالي واضبط متغيّر البيئة على مساره بدلاً من ذلك:
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET",
"refresh_token": "REFRESH_TOKEN",
"type": "authorized_user"
}
استبدِل القيم التالية:
CLIENT_ID
: معرّف العميل الجديد أو الحالي.CLIENT_SECRET
: سر العميل الجديد أو الحاليREFRESH_TOKEN
: رمز إعادة التحديث الجديد أو الحالي
نظام التشغيل Linux أو macOS
export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
Windows
set GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE_PATH
فهم الاختلافات بين الفلاتر
تتيح لغة طلبات البحث في Ad Manager API (الإصدار التجريبي) جميع ميزات لغة طلبات البحث الخاصة بالناشر (PQL)، ولكن هناك اختلافات نحوية كبيرة.
يوضّح هذا المثال الذي يعرض قائمة بعناصر Order
التغييرات الرئيسية، مثل
إزالة متغيّرات الربط والعوامل المنطقية الحسّاسة لحالة الأحرف واستبدال
جملة ORDER BY
وLIMIT
بحقول منفصلة:
Ad Manager SOAP API
<filterStatement>
<query>WHERE name like "PG_%" and lastModifiedDateTime >= :lastModifiedDateTime ORDER BY id ASC LIMIT 500</query>
<values>
<key>lastModifiedDateTime</key>
<value xmlns:ns2="https://www.google.com/apis/ads/publisher/v202502" xsi:type="ns2:DateTimeValue">
<value>
<date>
<year>2024</year>
<month>1</month>
<day>1</day>
</date>
<hour>0</hour>
<minute>0</minute>
<second>0</second>
<timeZoneId>America/New_York</timeZoneId>
</value>
</value>
</values>
</filterStatement>
Ad Manager API (الإصدار التجريبي)
تنسيق JSON
{
"filter": "displayName = \"PG_*\" AND updateTime > \"2024-01-01T00:00:00-5:00\"",
"pageSize": 500,
"orderBy": "name"
}
بترميز عنوان URL
GET https://admanager.googleapis.com/v1/networks/123/orders?filter=displayName+%3D+\"PG_*\"+AND+updateTime+%3E+\"2024-01-01T00%3A00%3A00-5%3A00\"
تتيح واجهة برمجة التطبيقات Ad Manager API (الإصدار التجريبي) جميع إمكانات PQL، مع اختلافات نحوية التالية عن واجهة برمجة التطبيقات SOAP API في "مدير إعلانات Google":
عاملا التشغيل
AND
وOR
حساسان لحالة الأحرف في Ad Manager API (الإصدار التجريبي). يتم التعامل معand
وor
بالتنسيق الصغير كسلسلتَي بحث LITERAL فارغتَين، وهي ميزة في Ad Manager API (الإصدار التجريبي) للبحث في جميع الحقول.استخدام عوامل التشغيل بالأحرف اللاتينية الكبيرة
// Matches unarchived Orders where order.notes has the value 'lorem ipsum'. notes = "lorem ipsum" AND archived = false
التعامل مع الأحرف الصغيرة على أنّها حرفية
// Matches unarchived Orders where order.notes has the value 'lorem ipsum' // and any field in the order has the literal value 'and'. notes = "lorem ipsum" and archived = false
الحرف
*
هو حرف بدل لمطابقة السلاسل. لا تتيح Ad Manager API (الإصدار التجريبي) استخدام عامل التشغيلlike
.الطلبات البرمجية للغة الاستعلامات البنيوية (PQL) في واجهة SOAP API لخدمة "مدير إعلانات Google"
// Matches orders where displayName starts with the string 'PG_' displayName like "PG_%"
Ad Manager API (الإصدار التجريبي)
// Matches orders where displayName starts with the string 'PG_' displayName = "PG_*"
يجب أن تظهر أسماء الحقول على الجانب الأيسر من مشغل مقارنة:
فلتر صالح
updateTime > "2024-01-01T00:00:00Z"
فلتر غير صالح
"2024-01-01T00:00:00Z" < updateTime
لا تتيح واجهة برمجة التطبيقات Ad Manager API (الإصدار التجريبي) استخدام المتغيّرات المرتبطة. يجب أن تكون جميع القيم مضمّنة.
يجب وضع علامات اقتباس مزدوجة حول السلاسل الثابتة التي تحتوي على مسافات، مثل
"Foo bar"
. لا يمكنك استخدام علامات الاقتباس المفردة لتغليف القيم الثابتة للسلاسل.
إزالة عبارات الترتيب حسب
إنّ تحديد ترتيب الترتيب اختياري في Ad Manager API (الإصدار التجريبي). إذا
أردت تحديد ترتيب فرز لمجموعة النتائج، أزِل عبارة ORDER BY
PQL واضبط الحقل orderBy
بدلاً من ذلك:
GET networks/${NETWORK_CODE}/orders?orderBy=updateTime+desc
نقل البيانات من الفواصل إلى الرموز المميّزة لصفحات الفهرسة
تستخدِم Ad Manager API (الإصدار التجريبي) الرموز المميّزة لصفحات التنقّل بدلاً من جُمل LIMIT
وOFFSET
لصفحات التنقّل في مجموعات النتائج الكبيرة.
تستخدِم Ad Manager API (الإصدار التجريبي) مَعلمة pageSize
للتحكّم في حجم الصفحة.
على عكس العبارة LIMIT
في Ad Manager SOAP API، فإنّ حذف حجم الصفحة يؤدي
إلى عدم عرض مجموعة النتائج بالكامل. بدلاً من ذلك، تستخدِم طريقة القائمة حجم صفحة
تلقائيًا يبلغ 50
. يحدّد المثال التالي pageSize
وpageToken
كمَعلمتَي عنوان URL:
# Initial request
GET networks/${NETWORK_CODE}/orders?pageSize=50
# Next page
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
على عكس واجهة SOAP API في "مدير إعلانات Google"، قد تعرِض واجهة برمجة التطبيقات في "مدير إعلانات Google" (الإصدار التجريبي) عددًا أقل من
النتائج مقارنةً بحجم الصفحة المطلوبة حتى إذا كانت هناك صفحات إضافية. استخدِم الحقل
nextPageToken
لتحديد ما إذا كانت هناك نتائج
إضافية.
على الرغم من أنّ البدء من موضع معيّن ليس مطلوبًا لقسمة الصفحات، يمكنك استخدام الحقل skip
لتعدد المواضيع. عند استخدام خيوط متعدّدة، استخدِم الرمز المميّز لنظام تقسيم الصفحات من
الصفحة الأولى لضمان القراءة من مجموعة النتائج نفسها:
# First thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}
# Second thread
GET networks/${NETWORK_CODE}/orders?pageSize=50&pageToken=${TOKEN_FROM_INITIAL_REQUEST}&skip=50