使用"试试吧!" GTM API文档中的功能: https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/variables/list?authuser=2 我可以从GTM获取包含变量的列表
然而,当我尝试更新变量(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的更新变量API存在问题。
有人可以确认更新GTM变量对他们有效吗?
此外,我尝试从后端执行此操作并弹出相同的响应。
这是我的代码:
public void Authenticate()
{
string serviceAccountEmail = "xxxxxxxxxxxx@local-proj.iam.gserviceaccount.com";
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();
从后端获取GTM的所有变量。一切都按预期工作。
但是当我尝试更新一个时:
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 :(得分:0)
如果您要更新值,请求中的参数必须包含3个属性:
类型:您正在编辑的类型,
关键:价值,
价值:你的价值
{
"name":"YOUR_VARIABLE_NAME",
"type":"YOUR_VARIABLE_TYPE",
"parameter":[{
"type":"YOUR_TYPE",
"key":"value",
"value":"YOUR_VALUE"
}]
}
Tag Manager API的文档有遗漏,并且提供的帮助非常少。 大多数指南都集中在GUI上,而Simo Ahava在他的例子中大多使用Python。
最佳, 磁卡