המדריך הזה הוא סקירה כללית ברמה גבוהה על השימוש בתכונות של מערכת פרוגרמטית ישירה באמצעות ה-API. הוא מתאר איך ליצור הצעה ואיך לנהל משא ומתן.
Primer
הצעה פרוגרמטית דומה להזמנה ב-Google Ad Manager. הצעות פרוגרמטיות מכילות מידע כללי על עסקה מוצעת ביניכם לבין קונה. הצעה, יחד עם הפריטים שלה, מייצגת הצעה של מלאי שטחי פרסום לקונה.
מידע נוסף זמין במרכז העזרה.
יצירת הצעה דרך ה-API
כדי ליצור אובייקט Proposal, צריך רק את השם ואת הקונה הפרוגרמטי. אפשר לקבל את מזהה הקונה הפרוגרמטי דרך ממשק המשתמש או דרך טבלת ה-PQL של Programmatic_Buyer.
Java
Proposal proposal = new Proposal(); // Setting required Marketplace information. ProposalMarketplaceInfo proposalMarketplaceInfo = new ProposalMarketplaceInfo(); proposalMarketplaceInfo.setBuyerAccountId(programmaticBuyerId); // Set common required fields for a proposal. proposal.setName("Proposal #" + new Random().nextInt(Integer.MAX_VALUE)); proposal.setPrimaryTraffickerId(primaryTraffickerId); proposal.setMarketplaceInfo(proposalMarketplaceInfo);
Python
proposal = { # Setting required Marketplace information. 'isProgrammatic': 'true', 'marketplaceInfo': { 'buyerAccountId': programmatic_buyer_id, }, # Set common required fields for proposals. 'name': 'Proposal #%s' % uuid.uuid4(), # ... }
PHP
$proposal = new Proposal(); $proposal->setName('Proposal #' . uniqid()); // Set the required Marketplace information. $proposalMarketplaceInfo = new ProposalMarketplaceInfo(); $proposalMarketplaceInfo->setBuyerAccountId($buyerId); $proposal->setMarketplaceInfo($proposalMarketplaceInfo);
C#
// Create a proposal with the minimum required fields. Proposal proposal = new Proposal() { name = "Programmatic proposal #" + new Random().Next(int.MaxValue), // Set required Marketplace information marketplaceInfo = new ProposalMarketplaceInfo() { buyerAccountId = programmaticBuyerId } };
Ruby
# Create proposal configuration object. proposal = { :marketplace_info => { :buyer_account_id => buyer_id }, :name => 'Proposal %s' % SecureRandom.uuid(), # ... }
לפני ששולחים את ההצעה לקונה לצורך משא ומתן, צריך להגדיר שדות נוספים. ההצעה חייבת לכלול מפרסם, איש מכירות, מנהל קמפיינים ואנשי קשר של המוכר.
Java
SalespersonSplit primarySalesperson = new SalespersonSplit(); primarySalesperson.setUserId(primarySalespersonId); proposal.setPrimarySalesperson(primarySalesperson);
Python
'primarySalesperson': { 'userId': primary_salesperson_id, }, 'primaryTraffickerId': primary_trafficker_id, 'probabilityOfClose': '100000',
PHP
// Create salesperson splits for the primary salesperson. $primarySalesperson = new SalespersonSplit(); $primarySalesperson->setUserId($primarySalespersonId); $proposal->setPrimarySalesperson($primarySalesperson); // Set the primary trafficker on the proposal for when it becomes an // order. $proposal->setPrimaryTraffickerId($primaryTraffickerId); $advertiser = new ProposalCompanyAssociation(); $advertiser->setType( ProposalCompanyAssociationType::ADVERTISER ); $advertiser->setCompanyId($advertiserId); $proposal->setAdvertiser($advertiser);
C#
// Set fields that are required before sending the proposal to the buyer. proposal.primaryTraffickerId = primaryTraffickerId; proposal.sellerContactIds = new long[] { primarySalespersonId }; proposal.primarySalesperson = new SalespersonSplit() { userId = primarySalespersonId, }; proposal.advertiser = new ProposalCompanyAssociation() { type = ProposalCompanyAssociationType.ADVERTISER, companyId = advertiserId };
Ruby
:primary_salesperson => { :user_id => primary_salesperson_id }, :primary_trafficker_id => primary_trafficker_id
הצעות מורכבות בדרך כלל מאובייקטים מסוג ProposalLineItem, ולכן השלב הבא הוא להוסיף פריטים להצעה החדשה שיצרתם.
הסטטוסים של הצעה פרוגרמטית
התרשים הבא מתאר הצעה פרוגרמטית בנקודות שונות במהלך תהליך המשא ומתן, מנקודת המבט של ה-API. כל מצב מיוצג על ידי שילובים שונים של השדות הבאים:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
מידע נוסף זמין במרכז העזרה של Ad Manager.
הדרכה מפורטת בנושא משא ומתן
כאן נסביר איך משתמשים ב-API כדי להשלים משא ומתן על הצעה פרוגרמטית עם קונה. נתייחס למצבים בתרשים שלמעלה.
הכנה לבדיקה או לאישור של הקונה
קודם כול, צריך ליצור טיוטה של הצעה פרוגרמטית עם פריטים בהצעה שרוצים לשלוח לקונה. זהו state C באיור שלמעלה.
בקשת בדיקה או אישור מהקונה
כשההצעה הפרוגרמטית מוכנה לבדיקה של הקונה, אפשר RequestBuyerReview או RequestBuyerAcceptance באמצעות השיטה ProposalService.performProposalAction.
הפעולה הזו תעביר אתכם לשלב המשא ומתן.
משא ומתן
בשלב הזה, יכולים לקרות כמה דברים.
- הקונה יכול לאשר את ההצעה הפרוגרמטית שלכם בלי לבצע בה שינויים.
- הקונה יכול להציע שינויים. במקרה כזה, ההצעה תוחזר למצב טיוטה (
state Bבאיור 1). בשלב הזה תצטרכו לפתוח את ההצעה לעריכה, לבצע את השינויים המוצעים ולשלוח אותה בחזרה לבדיקה של הקונה. - אתם יכולים גם להחליט לבצע שינויים עוד לפני שהקונה משיב. כדי לעשות את זה, פותחים את ההצעה לעריכה מ-
state Dבאיור 1.
המשא ומתן הזה נמשך עד שמגיעים להסכמה עם הקונה. אפשר לאחזר תגובות ביניכם לבין הקונה באמצעות getMarketplaceCommentsByStatement.
אפשר לשלוח הערה לקונה בזמן שנמצאים ב-state A. כדי לעשות את זה, צריך לעדכן את השדה marketplaceComment בהצעה באמצעות updateProposals.
ההערה תישלח כשתבקשו את אישור הקונה.
סופי
אחרי שאתם והקונה מאשרים את ההצעה הפרוגרמטית, היא עוברת למצב סופי (state F באיור 1).
לאחר מכן, מערכת Ad Manager יוצרת באופן אוטומטי פריטים מההצעה הפרוגרמטית הזו.
ברוב המקרים, סיימתם את העבודה על ההצעה הפרוגרמטית. עם זאת, יש שתי פעולות שאפשר לבצע במצב הזה:
- כדי לפתוח מחדש את ההצעה הפרוגרמטית למשא ומתן מחודש, אתם יכולים לערוך את השדות שקשורים להצגה בהצעה. כדי לעשות זאת, פותחים את ההצעה לעריכה (
state E to Aבאיור 1), מבצעים שינויים ואז מבקשים מהקונה לאשר אותם. - אתם יכולים לבצע עריכות שלא קשורות להצגת המודעות, כמו עדכון שם ההצעה, ולשקף את השינויים האלה בהזמנה ובפריטים ב-Ad Manager שנוצרו מהעסקה הזו. כדי לעשות את זה, עורכים את
state Eבאיור 1 ואז מבצעים את הפעולהUpdateOrderWithSellerData.