Ubah Konversi yang Ada

Panggil Conversion.update() untuk membuat jenis perubahan berikut pada satu atau beberapa konversi yang ada:

Search Ads 360 tidak mendukung perubahan di kolom berikut:

  • Tanggal konversi.
  • Jenis konversi.
  • Kata kunci atau kunjungan yang diatribusikan untuk konversi.
  • Aktivitas Floodlight atau nama aktivitasnya.

Namun, Anda dapat menandai konversi yang ada sebagai DIHAPUS dan mengupload konversi baru kapan saja dengan tanggal, jenis, ID atribusi, atau aktivitas Floodlight yang diperbarui (pastikan untuk menentukan conversionId yang baru juga).

Seperti halnya Conversion.insert(), jika permintaan update Anda menentukan beberapa konversi, Search Ads 360 akan mencoba memperbarui setiap konversi berdasarkan upaya terbaik alih-alih memperbarui seluruh batch sebagai transaksi {i>all-or-nothing<i}. Jika beberapa pembaruan dalam batch gagal, yang lain mungkin masih berhasil. Kami sarankan Anda membaca respons untuk setiap konversi yang diperbarui guna memastikan bahwa pembaruan berhasil.

Mengirim permintaan pembaruan

Sebagian besar kolom yang Anda tentukan dalam Conversion.update() digunakan untuk identifikasi konversi yang ingin Anda perbarui. Anda dapat menggunakan salah satu opsi berikut untuk mengidentifikasi konversi yang ada:

  • Tentukan clickId konversi
    • Semua konversi yang diedit harus dalam waktu 60 hari sejak ID klik dibuat.
  • Tentukan criterionId (ID kata kunci) konversi

Kedua teknik tersebut mengharuskan Anda menentukan conversionId, conversionTimestamp, dan transaksi type.

Selain itu, jika konversi asli menentukan revenueMicros dan currencyCode atau quantityMillis, permintaan update harus menentukan data ini bahkan jika Anda tidak mengubahnya.

Identifikasi konversi berdasarkan ID klik

Jika konversi awalnya menentukan ID klik, Anda dapat mengirim Conversion.update() yang menentukan kolom berikut:

  • clickId
  • conversionId
  • conversionTimestamp
  • type
  • state (hanya diperlukan jika Anda ingin mengubah status menjadi DIHAPUS atau AKTIF)
  • quantityMillis (hanya jika ditentukan dalam konversi asli)
  • revenueMicros (hanya jika ditentukan dalam konversi asli)
  • currencyCode (hanya jika ditentukan dalam konversi asli)

Contoh

Berikut ini contoh dari dua konversi yang ada:

{
 "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"
  }]
}     

Permintaan berikut memperbarui salah satu konversi dari contoh sebelumnya dan menghapus yang lain:

JSON

Perhatikan bahwa permintaan Conversion.update() menggunakan PUT Metode HTTP.

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())

Mengidentifikasi konversi menurut ID kata kunci

Jika Anda tidak memiliki akses ke ID klik, atau jika konversi awalnya diatribusikan ke kata kunci atau kata kunci/iklan, Anda dapat mengirim permintaan Conversion.update() yang menentukan kolom berikut:

  • criterionId (ID kata kunci)
  • conversionId
  • conversionTimestamp
  • type
  • state (hanya diperlukan jika Anda ingin mengubah status menjadi DIHAPUS atau AKTIF)
  • quantityMillis (hanya jika ditentukan dalam konversi asli)
  • revenueMicros (hanya jika ditentukan dalam konversi asli)
  • currencyCode (hanya jika ditentukan dalam konversi asli)

Secara opsional, Anda dapat menentukan ID lain, seperti ID iklan konversi, ID kampanye, dan seterusnya, tetapi Anda tidak perlu melakukannya. Search Ads 360 hanya memerlukan ID dalam daftar di atas untuk identifikasi konversi yang ada.

Contoh

Berikut contoh konversi yang ada:

{
 "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"
  }]
}     

Permintaan berikut memperbarui stempel waktu konversi:

JSON

Perhatikan bahwa permintaan Conversion.update() menggunakan PUT Metode HTTP.

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())

Menangani respons Search Ads 360

Respons untuk permintaan update sama dengan respons untuk penyisipan permintaan: Search Ads 360 menunjukkan keberhasilan hanya jika semua konversi dalam permintaan berhasil diperbarui.

Jika permintaan berhasil, responsnya akan menyertakan respons internal Search Ads 360 versi lengkap untuk setiap konversi yang diperbarui, seperti ID kampanye, ID grup iklan, dan kata kunci ID (kriteria).

Jika satu atau beberapa update gagal divalidasi atau diupload, responsnya akan mencakup kegagalan pesan untuk setiap pembaruan yang gagal. Respons tidak berisi pesan tentang konversi yang berhasil diperbarui. Untuk informasi selengkapnya tentang pesan kegagalan ini, lihat Menangani Respons Search Ads 360 untuk permintaan penyisipan.