แก้ไข Conversion ที่มีอยู่

เรียกใช้เมธอด Conversion.update() เพื่อทําการเปลี่ยนแปลงประเภทต่อไปนี้กับ Conversion ที่มีอยู่อย่างน้อย 1 รายการ

Search Ads 360 ไม่รองรับการเปลี่ยนแปลงรายการต่อไปนี้

  • วันที่เกิด Conversion
  • ประเภท Conversion
  • คีย์เวิร์ดหรือการเข้าชมที่เป็นแหล่งที่มาของ Conversion
  • ชื่อกิจกรรม Floodlight หรือชื่อกิจกรรม

อย่างไรก็ตาม คุณสามารถทําเครื่องหมาย Conversion ที่มีอยู่เป็น "นําออกแล้ว" และอัปโหลด Conversion ใหม่พร้อมด้วยวันที่ ประเภท รหัสการระบุแหล่งที่มา หรือกิจกรรม Floodlight ที่อัปเดตใหม่ได้เสมอ (อย่าลืมระบุ conversionId ใหม่ด้วย)

เช่นเดียวกับ Conversion.insert() หากคําขออัปเดตระบุ Conversion หลายรายการ Search Ads 360 จะพยายามอัปเดต Conversion แต่ละรายการอย่างดีที่สุดแทนที่จะอัปเดตทั้งกลุ่มเป็นธุรกรรมแบบ "ทั้งหมดหรือไม่มีอะไรเลย" หากการอัปเดตบางรายการในชุดไม่สำเร็จ การอัปเดตอื่นๆ อาจยังดำเนินการสำเร็จ เราขอแนะนําให้อ่านการตอบกลับสําหรับ Conversion ที่อัปเดตทุกรายการเพื่อให้แน่ใจว่าการอัปเดตสําเร็จ

(อัปเดต 2025) การเลิกใช้งาน dsConversionId

ปัจจุบันคุณสามารถใช้ dsConversionId หรือ conversionId เพื่อระบุและแก้ไข Conversion ได้ ระบบจะเลิกใช้งานฟิลด์ dsConversionId ในไตรมาสที่ 3 ปี 2025 นับจากนี้ไป คุณต้องใช้ conversionId เพื่อแก้ไข Conversion ใน Search Ads 360 Conversion API

การเปลี่ยนแปลงที่สำคัญ ได้แก่

  • การเลิกใช้งาน dsConversionId: dsConversionID ระบบจะไม่รองรับใน Search Ads 360 Reporting API (เรียกว่า conversion.id) หรือ UI การรายงาน (เรียกว่า "รหัส Conversion") อีกต่อไป
  • conversionId ข้อกําหนด: conversionId จะเป็นช่องที่ต้องกรอกสำหรับการแก้ไข Conversion ผ่าน Search Ads 360 Conversion API

วิธีรับ conversionId

  • Search Ads 360 Reporting API: คุณสามารถดึงข้อมูล advertiser_conversion_id โดยใช้ Search Ads 360 Reporting API ค่านี้สอดคล้องกับ conversionId ที่จําเป็นสําหรับการแก้ไข
  • UI ของ Search Ads 360: คุณจะเห็น "รหัส Conversion ของผู้ลงโฆษณา" ในหน้าการรายงาน Conversion ภายในอินเทอร์เฟซผู้ใช้ของ Search Ads 360 รหัส Conversion ในรายงาน SA360

ส่งคำขออัปเดต

ฟิลด์ส่วนใหญ่ที่คุณระบุใน Conversion.update() ใช้เพื่อระบุ Conversion ที่ต้องการอัปเดต คุณใช้เทคนิคใดก็ได้ต่อไปนี้เพื่อระบุ Conversion ที่มีอยู่

  • ระบุ clickId
      ของ Conversion
    • Conversion ทั้งหมดที่แก้ไขต้องอยู่ภายใน 60 วันนับจากเวลาที่สร้างรหัสคลิก
  • ระบุ criterionId (รหัสคีย์เวิร์ด) ของ Conversion

ทั้ง 2 เทคนิคนี้กำหนดให้คุณระบุ conversionId, conversionTimestamp และ type ของ Conversion

นอกจากนี้ หาก Conversion เดิมระบุ revenueMicros และ currencyCode หรือ quantityMillis คําขออัปเดตจะต้องระบุข้อมูลนี้แม้ว่าคุณจะไม่ได้เปลี่ยนแปลงก็ตาม

ระบุ Conversion ตามรหัสคลิก

หาก Conversion ระบุรหัสคลิกไว้ตั้งแต่แรก คุณสามารถส่งConversion.update() คำขอที่ระบุช่องต่อไปนี้

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (ต้องระบุเฉพาะในกรณีที่คุณต้องการเปลี่ยนสถานะเป็น "นําออกแล้ว" หรือ "ใช้งานอยู่")
  • quantityMillis (เฉพาะในกรณีที่ระบุไว้ใน Conversion ต้นฉบับ)
  • revenueMicros (เฉพาะในกรณีที่ระบุไว้ใน Conversion ต้นฉบับ)
  • currencyCode (เฉพาะในกรณีที่ระบุไว้ใน Conversion ต้นฉบับ)

ตัวอย่าง

ต่อไปนี้คือตัวอย่าง Conversion ที่มีอยู่ 2 รายการ

{
 "kind": "doubleclicksearch#conversionList",
  "conversion" : [{
    "clickId" : "COiYmPDTv7kCFcP0KgodOzQAAA",
    "conversionId" : "test_20130906_10",
    "conversionTimestamp" : "1378710000000",
    "segmentationType" : "FLOODLIGHT",
    "segmentationName" : "Test",
    "type": "TRANSACTION",
    "revenueMicros": "100000000", // 100 million revenueMicros is equivalent to $100 of revenue
    "currencyCode": "USD"
  },
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA",
   "conversionId": "test_1383337059137",
   "conversionTimestamp": "1378710000000",
   "segmentationType" : "FLOODLIGHT",
   "segmentationName" : "Test",
   "type": "ACTION",
   "quantityMillis": "1000"
  }]
}     

คําขอต่อไปนี้จะอัปเดต Conversion รายการใดรายการหนึ่งจากตัวอย่างก่อนหน้าและนําอีกรายการหนึ่งออก

JSON

โปรดทราบว่าคำขอ Conversion.update() ใช้เมธอด HTTP PUT

PUT https://www.googleapis.com/doubleclicksearch/v2/conversion
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
 "kind": "doubleclicksearch#conversionList",
 "conversion": [
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with data from your site
   "conversionId": "test_20130906_10",
   "conversionTimestamp": "1378710000000",
   "type": "TRANSACTION",
   "revenueMicros": "90000000", // 90 million revenueMicros is equivalent to $90 of revenue
   "currencyCode": "USD"
  },
  {
   "clickId": "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with data from your site
   "conversionId": "test_1383337059137",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "1000",
   "state": "REMOVED"
  }
 ]
}        

Java

/**
 * Instantiate the Doubleclicksearch service, create a conversion that updates an existing conversion,
 * and upload the conversions.
 */
public static void main(String[] args) throws Exception {

  Doubleclicksearch service = getService(); // See Set Up Your Application.

  // Set up a List to keep track of each conversion you create.
  List<Conversion> conversions = new Vector<Conversion>();

  // Create a conversion and add it to the conversion list.
  // Just to get a little fancy, the updateConversionFromVisit() method can be used for all
  // visit conversions, including conversions that don't specify quantity, revenue, or currency.
  // If quantityMillis wasn't specified in the original conversion, specify -1L for the
  // quantityMillis parameter. Likewise, if revenueMicros wasn't specified originally,
  // specify -1L for the revenueMicros parameter and an empty string for currency.
  conversionList = updateConversionFromVisit(
      conversionList,
      "COiYmPDTv7kCFcP0KgodOzQAAA", // clickId. Replace with data from your site
      "test_20130906_10",           // conversionId
      1378710000000L,               // timeStamp
      "TRANSACTION",                // type
      "",                           // state
      -1L,                          // quantityMillis
      90000000L,                    // revenueMicros. Equivalent to $90 of revenue
      "USD");                       // currencyCode

   // Here's a conversion that needs to be removed. Just set the state parameter to "REMOVED".
   conversionList = updateConversionFromVisit(
      conversionList,
      "COiYmPDTv7kCFcP0KgodOzQAAA", // clickId. Replace with data from your site
      "test_1383337059137",         // conversionId
      1378710000000L,               // timeStamp
      "ACTION",                     // type
      "REMOVED",                    // state
      1000L,                        // quantityMillis
      -1L,                          // revenueMicros
      "");                          // currencyCode

    // Upload the List and handle the response.
    uploadConversions(conversions, service); // See an example in Add New Conversions. 
  }

/**
 * Create a conversion and add it to a List<Conversion>.
 */
  private static List<Conversion> updateConversionFromVisit(List<Conversion> conversions,
      String clickId,
      String conversionId,
      Long timeStamp,
      String type,
      String state,
      Long quantity,
      Long revenue,
      String currency) {

    // Identifies the existing conversion.
    Conversion conversion = new Conversion()
        .setClickId(clickId)
        .setConversionId(conversionId)
        .setConversionTimestamp(BigInteger.valueOf(timeStamp))
        .setType(type);

    // Only add these fields if the value is not empty greater than -1.
    if(!state.isEmpty()) conversion.setState(state);
    if (quantity > -1L) {
      conversion.setQuantityMillis(quantity);
    }
    if (revenue > -1L) {
      conversion.setRevenueMicros(revenue);
      if (!currency.isEmpty()) {
        conversion.setCurrencyCode(currency);
      } else {
        System.err.println(String.format(
            "Can't add conversion %s. It specifies revenue but no currency.",
            conversion.getConversionId()));
        return conversions;
      }
    }

    conversions.add(conversion);
    return conversions;
  }         

Python

def update_conversion(service):
  """Change the revenue for one existing conversion and remove another.

  Args:
    service: An authorized Doubleclicksearch service. See Set Up Your Application.
  """
  request = service.conversion().update(
      body=
      {
          'conversion' : [{
              'clickId' : 'COiYmPDTv7kCFcP0KgodOzQAAA', // Replace with data from your site
              'conversionId' : 'test_20130906_13',
              'conversionTimestamp' : '1378710000000',
              'segmentationType' : 'FLOODLIGHT',
              'segmentationName' : 'Test',
              'type': 'TRANSACTION',
              'revenueMicros': '90000000', // 90 million revenueMicros is equivalent to $90 of revenue
              'currencyCode': 'USD'
            },
            {
             'clickId': 'COiYmPDTv7kCFcP0KgodOzQAAA', // Replace with data from your site
             'conversionId': 'test_1383337059137_01',
             'conversionTimestamp': '1378710000000',
             'segmentationType' : 'FLOODLIGHT',
             'segmentationName' : 'Test',
             'type': 'ACTION',
             'quantityMillis': '1000',
             'state': 'REMOVED'
            }]
      }
  )

  pprint.pprint(request.execute())

ระบุ Conversion ตามรหัสคีย์เวิร์ด

หากคุณไม่มีสิทธิ์เข้าถึงรหัสคลิก หรือหากเดิมที Conversion มีการระบุแหล่งที่มาเป็นคีย์เวิร์ดหรือคีย์เวิร์ด/โฆษณา คุณสามารถส่งConversion.update()คําขอที่ระบุช่องต่อไปนี้ได้

  • criterionId (รหัสคีย์เวิร์ด)
  • conversionId
  • conversionTimestamp
  • type
  • state (ต้องระบุเฉพาะในกรณีที่คุณต้องการเปลี่ยนสถานะเป็น "นําออกแล้ว" หรือ "ใช้งานอยู่")
  • quantityMillis (เฉพาะในกรณีที่ระบุไว้ใน Conversion ต้นฉบับ)
  • revenueMicros (เฉพาะในกรณีที่ระบุไว้ใน Conversion ต้นฉบับ)
  • currencyCode (เฉพาะในกรณีที่ระบุไว้ใน Conversion เดิม)

คุณระบุรหัสอื่นๆ ได้ เช่น รหัสโฆษณา รหัสแคมเปญ ของ Conversion เป็นต้น แต่ก็ไม่จําเป็น Search Ads 360 ต้องการเฉพาะรหัสในรายการด้านบนเพื่อระบุ Conversion ที่มีอยู่

ตัวอย่าง

ตัวอย่าง Conversion ที่มีอยู่มีดังนี้

{
 "kind": "doubleclicksearch#conversionList",
  "conversion" : [{
   "agencyId": "12300000000000456",
   "advertiserId": "45600000000010291",
   "engineAccountId": "700000000042441",
   "campaignId": "71700000002044839",
   "adGroupId": "58700000032026064",
   "criterionId": "43700004289911004",
   "adId": "44700000155906860",
   "conversionId": "test_1383157519886",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "1000",
   "segmentationType": "FLOODLIGHT",
   "segmentationName": "Test"
  }]
}     

คําขอต่อไปนี้จะอัปเดตการประทับเวลาของ Conversion

JSON

โปรดทราบว่าคำขอ Conversion.update() ใช้เมธอด HTTP PUT

PUT https://www.googleapis.com/doubleclicksearch/v2/conversion
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
 "kind": "doubleclicksearch#conversionList",
 "conversion": [
  {
   "criterionId": "43700004289911004", // Replace with your ID
   "conversionId": "test_1383157519886",
   "conversionTimestamp": "1378710000000",
   "type": "ACTION",
   "quantityMillis": "3000"
  }
 ]
}        

Java

    // Send conversion data to updateConversion, which creates a conversion and adds it
    // to the conversion list.
    conversionList =  updateConversionFromKeyword(conversionList,
        43700004289911004L,   // criterionId. Replace with your ID
        "test_1383157519886", // conversionId
        1378710000000L,       // timeStamp
        "ACTION",             // type
        "",                   // state
        3000L,                // quantityMillis
        -1L,                  // revenueMicros
        "");                  // currencyCode

  private static List<Conversion> updateConversionFromKeyword(List<Conversion> conversions,
       Long criterionId,
       String conversionId,
       Long timeStamp,
       String type,
       String state,
       Long quantity,
       Long revenue,
       String currency
    ) {

   Conversion conversion = new Conversion()
   .setCriterionId(criterionId)
   .setConversionId(conversionId)
   .setConversionTimestamp(BigInteger.valueOf(timeStamp))
   .setType(type);

   // Only add these fields if the value is not empty greater than -1.
   if(!state.isEmpty()) conversion.setState(state);
   if (quantity > -1L) {
     conversion.setQuantityMillis(quantity);
   }
   if (revenue > -1L) {
     conversion.setRevenueMicros(revenue);
     if (!currency.isEmpty()) {
       conversion.setCurrencyCode(currency);
     } else {
       System.err.println(String.format(
           "Can't add conversion %s. It specifies revenue but no currency.",
           conversion.getConversionId()));
       return conversions;
     }
   }

   conversions.add(conversion);
   return conversions;
   }                 

Python

def update_conversion(service):
  """Change the timestamp of a conversion. Use only the keyword id (criterionId)
  to identify the conversion.

  Args:
    service: An authorized Doubleclicksearch service. See Set Up Your Application.
  """
  request = service.conversion().update(
      body=
      {
          'conversion': [{
              'criterionId': '43700004289911004', // Replace with your ID
              'conversionId': 'test_1383157519886',
              'conversionTimestamp': '1378760000000',
              'type': 'ACTION',
              'quantityMillis': '1000'
            }]
      }
  )

  pprint.pprint(request.execute())

จัดการคําตอบของ Search Ads 360

การตอบกลับคําขออัปเดตจะเหมือนกับการตอบกลับคําขอแทรก กล่าวคือ Search Ads 360 จะระบุว่าสําเร็จก็ต่อเมื่ออัปเดต Conversion ทั้งหมดในคําขอเรียบร้อยแล้ว

หากคําขอสําเร็จ การตอบกลับจะมีการแสดงข้อมูลภายในของ Search Ads 360 แบบเต็มสําหรับ Conversion ที่อัปเดตแต่ละรายการ เช่น รหัสแคมเปญ รหัสกลุ่มโฆษณา และรหัสคีย์เวิร์ด (เกณฑ์)

หากการอัปเดตอย่างน้อย 1 รายการไม่ผ่านการตรวจสอบหรืออัปโหลดไม่สำเร็จ การตอบกลับจะมีข้อความแสดงข้อผิดพลาดของการอัปเดตแต่ละรายการที่ไม่สำเร็จ การตอบกลับไม่มีข้อความเกี่ยวกับ Conversion ที่อัปเดตเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับข้อความแสดงข้อผิดพลาดเหล่านี้ได้ที่จัดการการตอบกลับของ Search Ads 360 สําหรับคําขอแทรก