แก้ไข Conversion

คู่มือนี้จะให้คําแนะนําโดยละเอียดเกี่ยวกับการแก้ไข Conversion โดยใช้บริการ Conversions ของ Campaign Manager 360 ก่อนที่จะดําเนินการต่อ เราขอแนะนําให้คุณอ่านภาพรวมสําหรับข้อมูลเบื้องต้นเกี่ยวกับ Conversion ออฟไลน์และทําความคุ้นเคยกับแนวคิดที่กล่าวถึงในคู่มือนี้

ข้อควรทราบก่อนที่จะเริ่มต้น

เวิร์กโฟลว์การแก้ไขนี้ช่วยให้คุณแก้ไข quantity และ value ของ Conversion ออนไลน์และออฟไลน์ที่มีอยู่ได้ โดยจะต้องระบุค่าที่ระบุ Conversion เฉพาะที่จะแก้ไข คุณจะได้รับค่าเหล่านี้ในรูปแบบที่แตกต่างกัน ทั้งนี้ขึ้นอยู่กับประเภทของ Conversion ที่คุณกําลังแก้ไข

  • คุณสามารถดูค่าที่จําเป็นในการระบุ Conversion ออนไลน์ได้จากการโอนข้อมูล

  • ค่าที่จําเป็นสําหรับการระบุ Conversion ออฟไลน์จะส่งกลับมาใน ConversionsBatchInsertResponse ของคําขอ batchinsert ที่สําเร็จ

เมื่อคุณแก้ไข Conversion ของประเภทใดรูปแบบหนึ่งสําเร็จแล้ว ConversionsBatchUpdateResponse จะมีค่าที่จําเป็นสําหรับการแก้ไขครั้งต่อๆ ไป

กําหนดค่าทรัพยากร Conversion

ขั้นตอนแรกในกระบวนการแก้ไขจะเกี่ยวข้องกับการสร้างออบเจ็กต์ทรัพยากร Conversion รายการขึ้นไป

ช่องต่อไปนี้จะใช้เพื่อระบุ Conversion ที่จะแก้ไข ช่องเหล่านี้จําเป็นต้องระบุและต้องตรงกันกับ Conversion ที่มีอยู่ทุกประการ

ช่อง คำอธิบาย

encryptedUserId หรือ gclid หรือ dclicd หรือ matchid หรือ mobileDeviceId

รหัสผู้ใช้ที่เข้ารหัส, รหัสคลิกของ Google, รหัสคลิกดิสเพลย์, รหัสการจับคู่ หรือรหัสอุปกรณ์เคลื่อนที่ที่สร้าง Conversion
floodlightActivityId กิจกรรม Floodlight ที่เป็นแหล่งที่มาของ Conversion
floodlightConfigurationId การกําหนดค่า Floodlight ที่ใช้โดยกิจกรรมที่ระบุ
ordinal ตัวระบุข้อมูลที่ซ้ํากันซึ่งเชื่อมโยงกับ Conversion
timestampMicros การประทับเวลาของ Conversion ในหน่วยไมโครวินาทีนับตั้งแต่เริ่มต้น Unix Epoch

ฟิลด์ที่สามารถแก้ไขได้แสดงอยู่ที่ด้านล่าง คุณต้องระบุข้อมูลในช่องเหล่านี้และค่าที่คุณระบุจะเขียนทับค่าที่มีอยู่ก่อนแล้วใน Conversion ที่กําลังแก้ไข

ช่อง คำอธิบาย
quantity จํานวนรายการที่เชื่อมโยงกับ Conversion
value จํานวนรายได้ที่เกิดจาก Conversion

ช่องอื่นๆ ทั้งหมดที่กล่าวถึงในเอกสารอ้างอิงจะไม่ได้รับการสนับสนุน และไม่สามารถแก้ไขได้ การรวมช่องที่ไม่รองรับไว้ในคําขอแก้ไขจะทําให้เกิดข้อผิดพลาด หาก Conversion ที่กําลังแก้ไขมีค่าที่มีอยู่แล้วสําหรับช่องที่ไม่รองรับ ค่าเหล่านั้นจะยังคงอยู่โดยอัตโนมัติ

ตัวอย่างด้านล่างแสดงการสร้างออบเจ็กต์ทรัพยากร Conversion แบบง่ายเพื่อแก้ไข

C#

// Find the Floodlight configuration ID based on the provided activity ID.
FloodlightActivity floodlightActivity =
    service.FloodlightActivities.Get(profileId, floodlightActivityId).Execute();
long floodlightConfigurationId = (long) floodlightActivity.FloodlightConfigurationId;

// Construct the conversion object with values that identify the conversion to update.
Conversion conversion = new Conversion();
conversion.EncryptedUserId = conversionUserId;
conversion.FloodlightActivityId = floodlightActivityId;
conversion.FloodlightConfigurationId = floodlightConfigurationId;
conversion.Ordinal = conversionOrdinal;
conversion.TimestampMicros = conversionTimestamp;

// Set the fields to be updated. These fields are required; to preserve a value from the
// existing conversion, it must be copied over manually.
conversion.Quantity = newQuantity;
conversion.Value = newValue;

Java

// Create a conversion object populated with values that identify the conversion to update.
Conversion conversion = new Conversion();
conversion.setEncryptedUserId(encryptedUserId);
conversion.setFloodlightActivityId(floodlightActivityId);
conversion.setFloodlightConfigurationId(floodlightConfigurationId);
conversion.setOrdinal(ordinal);
conversion.setTimestampMicros(timestampMicros);

// Set the fields to be updated. These fields are required; to preserve a value from the
// existing conversion, it must be copied over manually.
conversion.setQuantity(newQuantity);
conversion.setValue(newValue);

PHP

// Find Floodlight configuration ID based on provided activity ID.
$activity = $this->service->floodlightActivities->get(
    $values['user_profile_id'],
    $values['floodlight_activity_id']
);
$floodlightConfigId = $activity->getFloodlightConfigurationId();

// Create a conversion object with values that identify the conversion to
// update.
$conversion = new Google_Service_Dfareporting_Conversion();
$conversion->setEncryptedUserId($values['encrypted_user_id']);
$conversion->setFloodlightActivityId($values['floodlight_activity_id']);
$conversion->setFloodlightConfigurationId($floodlightConfigId);
$conversion->setOrdinal($values['ordinal']);
$conversion->setTimestampMicros($values['timestamp']);

// Set the fields to be updated. These fields are required; to preserve a
// value from the existing conversion, it must be copied over manually.
$conversion->setQuantity($values['new_quantity']);
$conversion->setValue($values['new_value']);

Python

# Construct the conversion object with values that identify the conversion
# to update.
conversion = {
    'encryptedUserId': encrypted_user_id,
    'floodlightActivityId': floodlight_activity_id,
    'floodlightConfigurationId': floodlight_config_id,
    'ordinal': ordinal,
    'timestampMicros': timestamp
}

# Set the fields to be updated. These fields are required; to preserve a
# value from the existing conversion, it must be copied over manually.
conversion['quantity'] = new_quantity
conversion['value'] = new_value

Ruby

# Look up the Floodlight configuration ID based on activity ID.
floodlight_activity = service.get_floodlight_activity(profile_id,
  existing_conversion[:floodlight_activity_id])
floodlight_config_id = floodlight_activity.floodlight_configuration_id

# Construct the conversion with values that identify the conversion to
# update.
conversion = DfareportingUtils::API_NAMESPACE::Conversion.new(
  encrypted_user_id: existing_conversion[:encrypted_user_id],
  floodlight_activity_id: existing_conversion[:floodlight_activity_id],
  floodlight_configuration_id: floodlight_config_id,
  ordinal: existing_conversion[:ordinal],
  timestamp_micros: existing_conversion[:timestamp]
)

# Set the fields to be updated. These fields are required; to preserve a
# value from the existing conversion, it must be copied over manually.
conversion.quantity = new_quantity
conversion.value = new_value

ระบุข้อมูลการเข้ารหัส

หาก Conversion ที่แก้ไขเชื่อมโยงกับรหัสผู้ใช้ที่เข้ารหัส คุณจะต้องระบุรายละเอียดวิธีเข้ารหัสไว้เป็นส่วนหนึ่งของคําขอแก้ไข ดูรายละเอียดในคู่มือการอัปโหลด Conversion

หากจําเป็น การสร้างออบเจ็กต์ EncryptionInfo ที่ระบุค่าเหล่านี้จะเป็นขั้นตอนที่ 2 ในเวิร์กโฟลว์การแก้ไข ดังนี้

C#

// Create the encryption info.
EncryptionInfo encryptionInfo = new EncryptionInfo();
encryptionInfo.EncryptionEntityId = encryptionEntityId;
encryptionInfo.EncryptionEntityType = encryptionEntityType;
encryptionInfo.EncryptionSource = encryptionSource;

Java

// Create the encryption info.
EncryptionInfo encryptionInfo = new EncryptionInfo();
encryptionInfo.setEncryptionEntityId(encryptionEntityId);
encryptionInfo.setEncryptionEntityType(encryptionEntityType);
encryptionInfo.setEncryptionSource(encryptionSource);

PHP

$encryptionInfo = new Google_Service_Dfareporting_EncryptionInfo();
$encryptionInfo->setEncryptionEntityId($values['encryption_entity_id']);
$encryptionInfo->setEncryptionEntityType($values['encryption_entity_type']);
$encryptionInfo->setEncryptionSource($values['encryption_source']);

Python

# Construct the encryption info.
encryption_info = {
    'encryptionEntityId': encryption_entity_id,
    'encryptionEntityType': encryption_entity_type,
    'encryptionSource': encryption_source
}

Ruby

# Construct the encryption info.
encryption_info = DfareportingUtils::API_NAMESPACE::EncryptionInfo.new(
  encryption_entity_id: encryption[:entity_id],
  encryption_entity_type: encryption[:entity_type],
  encryption_source: encryption[:source]
)

สร้างคําขออัปเดต

ขั้นตอนสุดท้ายในกระบวนการนี้คือการแก้ไข Conversion ด้วยการโทรหา batchupdate วิธีนี้ยอมรับออบเจ็กต์ ConversionsBatchUpdateRequest ซึ่งจะรวมชุด Conversion ที่จะแก้ไขกับข้อมูลการเข้ารหัสที่เกี่ยวข้อง (เมื่อจําเป็น)

C#

// Insert the conversion.
ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest();
request.Conversions = new List<Conversion>() { conversion };
request.EncryptionInfo = encryptionInfo;

ConversionsBatchUpdateResponse response =
    service.Conversions.Batchupdate(request, profileId).Execute();

Java

ConversionsBatchUpdateRequest request = new ConversionsBatchUpdateRequest();
request.setConversions(ImmutableList.of(conversion));
request.setEncryptionInfo(encryptionInfo);

ConversionsBatchUpdateResponse response = reporting.conversions()
    .batchupdate(profileId, request).execute();

PHP

$batch = new Google_Service_Dfareporting_ConversionsBatchUpdateRequest();
$batch->setConversions([$conversion]);
$batch->setEncryptionInfo($encryptionInfo);

$result = $this->service->conversions->batchupdate(
    $values['user_profile_id'],
    $batch
);

Python

# Update the conversion.
request_body = {
    'conversions': [conversion],
    'encryptionInfo': encryption_info
}
request = service.conversions().batchupdate(
    profileId=profile_id, body=request_body)
response = request.execute()

Ruby

# Construct the batch update request.
batch_update_request =
  DfareportingUtils::API_NAMESPACE::ConversionsBatchUpdateRequest.new(
    conversions: [conversion],
    encryption_info: encryption_info
  )

# Update the conversion.
result = service.batchupdate_conversion(profile_id, batch_update_request)

โปรดทราบว่า Campaign Manager 360 พยายามแก้ไข Conversion แต่ละรายการในคําขออย่างดีที่สุด แทนการอัปเดตทั้งกลุ่มเป็นธุรกรรมทั้งหมดและไม่ต้องดําเนินการใดๆ หาก Conversion บางรายการในกลุ่มอัปเดตไม่สําเร็จ รายการอื่นอาจยังอัปเดตได้สําเร็จ ดังนั้น เราขอแนะนําให้คุณตรวจสอบ ConversionsBatchUpdateResponse ที่แสดงผลอีกครั้งเพื่อดูสถานะของ Conversion แต่ละรายการ

C#

// Handle the batchinsert response.
if (!response.HasFailures.Value) {
  Console.WriteLine("Successfully updated conversion for encrypted user ID {0}.",
      conversionUserId);
} else {
  Console.WriteLine("Error(s) updating conversion for encrypted user ID {0}:",
      conversionUserId);

  ConversionStatus status = response.Status[0];
  foreach(ConversionError error in status.Errors) {
    Console.WriteLine("\t[{0}]: {1}", error.Code, error.Message);
  }
}

Java

if (!response.getHasFailures()) {
  System.out.printf("Successfully updated conversion for encrypted user ID %s.%n",
      encryptedUserId);
} else {
  System.out.printf("Error(s) updating conversion for encrypted user ID %s:%n",
      encryptedUserId);

  // Retrieve the conversion status and report any errors found. If multiple conversions
  // were included in the original request, the response would contain a status for each.
  ConversionStatus status = response.getStatus().get(0);
  for (ConversionError error : status.getErrors()) {
    System.out.printf("\t[%s]: %s.%n", error.getCode(), error.getMessage());
  }
}

PHP

if (!$result->getHasFailures()) {
    printf(
        'Successfully updated conversion for encrypted user ID %s.',
        $values['encrypted_user_id']
    );
} else {
    printf(
        'Error(s) updating conversion for encrypted user ID %s:<br><br>',
        $values['encrypted_user_id']
    );

    $status = $result->getStatus()[0];
    foreach ($status->getErrors() as $error) {
        printf('[%s] %s<br>', $error->getCode(), $error->getMessage());
    }
}

Python

if not response['hasFailures']:
  print('Successfully updated conversion for encrypted user ID %s.' %
        encrypted_user_id)
else:
  print('Error(s) updating conversion for encrypted user ID %s.' %
        encrypted_user_id)

  status = response['status'][0]
  for error in status['errors']:
    print '\t[%s]: %s' % (error['code'], error['message'])

Ruby

if result.has_failures
  puts format('Error(s) updating conversion for encrypted user ID %s.',
    existing_conversion[:encrypted_user_id])

  status = result.status[0]
  status.errors.each do |error|
    puts format("\t[%s]: %s", error.code, error.message)
  end
else
  puts format('Successfully updated conversion for encrypted user ID %s.',
    existing_conversion[:encrypted_user_id])
end

ช่อง status ของคําตอบดังที่แสดงไว้ด้านบนจะมีออบเจ็กต์ ConversionStatus สําหรับทุก Conversion ที่รวมอยู่ในคําขอเดิม หากคุณสนใจเฉพาะ Conversion ที่ไม่อัปเดต คุณจะใช้ช่อง hasFailures เพื่อระบุได้อย่างรวดเร็วว่า Conversion ใดก็ตามในกลุ่มที่ระบุล้มเหลว