2017-02-10 6 views
2

Использование «Попробуйте!» функция из документации GTM API: https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/variables/list?authuser=2 Я могу получить список моих переменных из GTMНевозможно обновить переменную GTM с помощью API Google

Однако, когда я пытаюсь обновить переменную (https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/variables/update?authuser=2), опять же с помощью «! Попробуйте», я получаю:

{ 
"error": { 
    "errors": [ 
    { 
    "domain": "global", 
    "reason": "invalidArgument", 
    "message": "Bad Request" 
    } 
    ], 
    "code": 400, 
    "message": "Bad Request" 
} 
} 

Я уверен, что правильно вставляю все параметры, и после одного дня попыток я предполагаю, что что-то не так с GTM Update Variable API.

Может ли кто-нибудь подтвердить, что обновление переменной GTM работает для них?

Кроме того, я стараюсь сделать это из внутреннего и одного и того же ответа всплывающих окон.

Вот мой код:

public void Authenticate() 
{ 


    string serviceAccountEmail = "[email protected]"; 

    string folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage/key.p12"); 
    var certificate = new X509Certificate2(folder, "notasecret", X509KeyStorageFlags.Exportable); 

    ServiceAccountCredential credential = new ServiceAccountCredential(
     new ServiceAccountCredential.Initializer(serviceAccountEmail) 
     { 
      Scopes = new[] { TagManagerService.Scope.TagmanagerEditContainers} 
     }.FromCertificate(certificate)); 

    // Create the service. 
    var service = new TagManagerService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = credential, 
     ApplicationName = "My Local Proj" 
    }); 

На данный момент сервис с проверкой подлинности, так что я могу просто сделать:

var myGTMVars = service.Accounts.Containers.Variables.List("AccountID", "ContainerID").Execute(); 

Чтобы получить все мои переменные от ГТМ с фоновым. Все работает так, как ожидалось.

Но когда я пытаюсь обновить один:

Variable gTMVar = new Variable(); 
    gTMVar.Name = "IsAfterSignUpSuccess"; 
    gTMVar.Type = "c"; 
    var param = new Parameter() 
    { 
     Type = "template", 
     Value = "true" 
    }; 
    gTMVar.Parameter = new List<Parameter>(); 
    gTMVar.Parameter.Add(param); 
    try 
    { 
     var newVar = service.Accounts.Containers.Variables.Update(body: gTMVar, accountId: "xxx", containerId: "xxx", variableId: "x").Execute(); 
    } 
    catch (Exception ex) 
    { 

    } 

он не каждый раз, давая мне BadRequest. Я пробовал разные параметры, разные типы для переменных и ничего не помогал. Также попробовал разные области для запуска службы - ничего не помогло.

Существует плохая информация по этому вопросу, особенно для C#.

Я разместил здесь свой код - надеюсь, что он спасет чей-то день, поскольку он не был прямым для аутентификации службы из-за отсутствия взаимодействия с пользователем. (Ну в конце концов, это оказалось легко)

+0

Вам удалось решить эту проблему? У меня аналогичная проблема с тегом awct, в то время как все настройки и параметры в точности верны, он по-прежнему возвращает 400 Bad Request, в пользовательском html он отлично работает, я скопировал именно эту настройку, рекомендованную в словаре, но ничего не работает , –

ответ

0

Если вы пытаетесь обновить значение, параметр в запросе должен иметь 3 свойства:
типа: тип, который Вы пытаетесь редактировать,
ключ : значение,
значение: ВАШЕ зНАЧЕНИЕ

URL: https://www.googleapis.com/tagmanager/v1/accounts/accountId/containers/containerId/variables/variableId
ПАРАМЕТРЫ:

{ 
    "name":"YOUR_VARIABLE_NAME", 
    "type":"YOUR_VARIABLE_TYPE", 
    "parameter":[{ 
     "type":"YOUR_TYPE", 
     "key":"value", 
     "value":"YOUR_VALUE" 
    }] 
} 

Документация для тегов API Менеджер пропусков и т здесь очень мало справки. Большинство руководств сосредоточены на графическом интерфейсе, а Симо Ахава в основном использует Python в своих примерах.

Бест, Cika

Смежные вопросы