פרסום פרוגרמטי

המדריך הזה כולל סקירה כללית של השימוש בתכונות של גישה פרוגרמטית ישירה דרך ה-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. כל מצב מיוצג על ידי שילובים שונים של השדות הבאים:

מידע נוסף זמין במרכז העזרה של Ad Manager.

המדינות שבהן יכולה להופיע הצעה פרוגרמטית במהלך האינטראקציה שלה עם Marketplace.
איור 1: המדינות של הצעה פרוגרמטית

הדרכה מפורטת למשא ומתן

במאמר הזה נדריך אתכם בשימוש ב-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.