Попытка найти способ перечисления всех тегов в контейнере GTM с помощью JavaScript.Мы стремимся экспортировать все теги для клиента в Google Sheets, чтобы мы могли лучше разобраться в очистке их контейнера (в настоящее время имеется более 500 тегов).
Я успешно захватил контейнериз GTM в Sheets, но по данным нескольких поисков Google, контейнер не имеет свойства для тегов под ним.
var gtmID;
var webPropertyID;
var name;
var triggerType;
var firingTrigger;
var lastEdited;
var clientID = 'CLIENT_ID';
var containerName = 'Customer - WEBSITES';
var workspaceName = 'Default Workspace';
var container;
var scopes=['https://www.googleapis.com/auth/tagmanager.manage.accounts',
'https://www.googleapis.com/auth/tagmanager.edit.containers',
'https://www.googleapis.com/auth/tagmanager.delete.containers',
'https://www.googleapis.com/auth/tagmanager.edit.containerversions',
'https://www.googleapis.com/auth/tagmanager.manage.users',
'https://www.googleapis.com/auth/tagmanager.publish'];
var jsonObjectGTM=[];
var jsonObjectTags=[];
function controller() {
gtmID = 'GTM_ID';
listContainer(gtmID);
listTags(jsonObjectGTM);
recordTags(jsonObjectTags);
}
function checkAuth(immediate) {
var authorizeCheckPromise = new Promise((resolve) => {
gapi.auth.authorize(
{ client_id: clientID, scope: scopes.join(' '), immediate: immediate}, resolve);
});
authorizeCheckPromise
.then(handleAuthResult)
.then(loadTagManagerApi)
.then(runTagManagerTask)
.catch(() => {
console.log('you must authorize any access to the api.');
}
//Check if the user has authoriation
function checkAuth() {
checkAuth(true);
}
//Initiate auth flow in response to user clicking authorize button
function handleAuthclick(event) {
checkAuth();
return false;
}
//Handle response from authorization server
function handleAuthResult(authResult) {
return new Promise((resolce, reject) => {
var authorizeDiv = document.getElementById('authorize-div');
if(authResult && !authResult.error) {
//Hide auth UI, then load client library
authorizeDiv.style.display = 'none';
resolve();
} else {
//Show auth UI, allowing the user to initiate authorization by clicking authorize button
authorizeDiv.style.display = 'inline';
reject();
}
});
}
//load Tag Manager API client library
function loadTagManagerApi() {
return new Promise((resolve, reject) => {
console.log('Load Tag Manager api');
gapi.client.load('tagmanager', 'v2', resolve);
});
}
//Interacts with the tagmanager api v2 to grab the tags
function runTagManagerTask() {
return new Promise((resolve, reject) => {
console.log('Grabbing list of tags');
container = findContainer(gtmID, containerName)
.catch(handleError);
resolve();
}
}
//handles error
function handleError(error) {
console.log('Error when interacting with GTM API');
console.log(error);
}
//Wraps an API request in a promise
function reqestPromise(request) {
return new Promise((resolve, reject) => {
request.execute((response) => {
if (response.code) {
reject(response);
}
resolve(response);
}
}
}
//Returns the specified container
function findContainer(accountPath, containerName) {
consle.log('Finding container in account:' + accountPath);
var request = gapi.client.tagmanager.accounts.containers.list({'parent' : accountPath});
return requestPromise(request)
.then((response) => {
var containers = response.container || [];
var container = containers.find((container) => container.name === containerName);
return container ||
Promise.reject('Unable to find ' + containerName + ' container.');
});
}
Просто нужно найти способ получить массив / список тегов изконтейнер, как только я схватил его