При загрузке автономного преобразования в поиск DoubleClick с использованием библиотеки google-api-php-client я обнаружил следующую ошибку.
Неустранимая ошибка: необработанное исключение «Google_Service_Exception» с сообщением «{» error «: {» errors «: [{» domain «:» global «,» reason «:» requestValidation «,» message «:» Запрос недействителен. Подробности: [Обнаружена пустая партия.] «}],» Код «: 400,» сообщение «:» Запрос недействителен. Подробности: [Обнаружена пустая партия.] «}} ‘В / var / www / ds3 / vendor /google/apiclient/src/Google/Http/REST.php:118 Трассировка стека: # 0 /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php(94): Google_Http_REST :: decodeHttpResponse (Объект (GuzzleHttp \ Psr7 \ Response), Объект (GuzzleHttp \ Psr7 \ Request), ‘Google_Service _…’) # 1 [внутренняя функция]: Google_Http_REST :: doExecute (Объект (GuzzleHttp \ Client), Объект (GuzzleHttp \ Psr7 \ Request), ‘Google_Service _…’) # 2 /var/www/ds3/vendor/google/apiclient/src/Google/Task/Runner.php(176): call_user_func_array (Array, Array) # 3 / var /www/ds3/vendor/google/apiclient/src/Google/Http/REST.php(58): Google_Task_Runner-> run () # 4 / var / www / ds3 / vendor / google / apiclient / src / Google / Client .php (788) в /var/www/ds3/vendor/google/apiclient/src/Google/Http/REST.php в строке 118
Используя следующий код, чтобы вставить новое преобразование
putenv('GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SERVICE_ACCOUNT_JSONFILE.json');
$Client = new Google_Client();
$Client->useApplicationDefaultCredentials();
$Client->addScope(Google_Service_Doubleclicksearch::DOUBLECLICKSEARCH);
$DS3 = new Google_Service_Doubleclicksearch($Client);
$Conversion = new Google_Service_Doubleclicksearch_Conversion();
$Conversion->setClickId('MY_GCLID');
$Conversion->setConversionId('MY_CONV_ID');
$Conversion->setConversionTimestamp('MY_CONV_TIMESTAMP');
$Conversion->setSegmentationType('FLOODLIGHT');
$Conversion->setSegmentationName('MY_FLOODLIGHT_ACTIVITY_NAME');
$Conversion->setSegmentationType('ACTION');
$ConversionList = new Google_Service_Doubleclicksearch_ConversionList();
$ConversionList->setConversion($Conversion);
$Response = $DS3->conversion->insert($ConversionList);
print_r($Response);
Сегодня у меня ушло какое-то время — но я думаю, что смог воссоздать вашу проблему и найти решение. Проблема заключается в том, как составлен список конверсий.
При вашем текущем подходе вы получите объект, который выглядит примерно так:
{
{
"clickId": "MY_GCLID",
"segmentationName": "MY_SEGMENTATION_NAME",
.
.
.
}
}
То, что вы хотите, это что-то вроде этого:
{
"conversion": [{
"clickId": "MY_CLICK",
"conversionId": "MY_CONV",
"conversionTimestamp": "MY_TIME",
"currencyCode": "USD",
"revenueMicros": "SOMEMONEY",
"type": "TRANSACTION"}],
"kind": "doubleclicksearch#conversionList"}
Изменение вашего кода будет происходить вокруг самого списка:
$ConversionList = new Google_Service_Doubleclicksearch_ConversionList();
$ConversionList->setKind('doubleclicksearch#conversionList');
$ConversionList['conversion'] = [$Conversion]; // iterator magic
Других решений пока нет …