Bonjour,
Je suis en train de migrer des propriétés Google Analytics Universal vers GA4 (Google Analytics 4)
J'ai plus de 40 propriétés par compte et de nombreuses custom metrics / dimensions par propriétés.
Afin de limiter les actions de saisie manuelle dans l'inferface je souhaitais utiliser l'API Google Analytics via un Appscript pour scripter le copier coller de ces éléments depuis une propriété vers une autre.
J''utilise ce script pour le faire. Il fonctionne très bien mais il ne va récupérer par défaut que les 50 premiers éléments
Il semblerait d'après l'API : https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1alpha/properties.customDimensions/list
Que par défaut seule 50 ressources sont retournées et qu'il faille passer un paramètre pageSize pour spécifier le nombre à retourner si >50.
cf : pageSize : integer
Nombre maximal de ressources à renvoyer. S'il n'est pas spécifié, 50 ressources au maximum seront renvoyées. La valeur maximale est 200 (les valeurs supérieures seront forcées au maximum).
Mon problème est que je n'arrive pas à ajouter ce paramètre dans mon script.
Pourriez-vous m'indiquer comment le modifier pour qu'il prenne en compte une valeur pageSize = 150
Mercir pour votre aide.
Mon AppScript (fonctionnel )
function main(){
gaSourcePropertyId = 'XXXX'; // Proprerty to copy from
gaDestinationPropertyId = 'XXXX'; // Proprerty to copy to
copyCustomDimensions(gaSourcePropertyId, gaDestinationPropertyId);
}
function copyCustomDimensions(gaSourcePropertyId, gaDestinationPropertyId) {
let sourceDimensions = getCustomDimensions(gaSourcePropertyId);
addCustomDimensions(gaDestinationPropertyId, sourceDimensions);
}
function getCustomDimensions(gaPropertyId) {
try {
return AnalyticsAdmin.Properties.CustomDimensions.list(`properties/${gaPropertyId}`)['customDimensions'];
} catch (error) {
console.error(error);
}
}
function addCustomDimensions(gaPropertyId, dimensions) {
let destinationCustomDimensions = getCustomDimensions(gaPropertyId);
// The destination may not have any custom dimensions.
if (typeof destinationCustomDimensions == 'undefined') {
console.info(`Could not get custom definitions for property ID '${gaPropertyId}'.`, destinationCustomDimensions);
destinationCustomDimensions = [];
};
const destinationDimensionParameterNames = destinationCustomDimensions.map(dimension=>dimension['parameterName']);
dimensions.forEach((sourceDimension)=>{
// Check if the new dimension already exists in the destination.
if ( !destinationDimensionParameterNames.includes(sourceDimension['parameterName']) ) {
let destinationDimension = {
"parameterName": sourceDimension['parameterName'],
"displayName": sourceDimension['displayName'],
"description": sourceDimension['description'],
"scope": sourceDimension['scope'],
};
let result = null;
try {
result = AnalyticsAdmin.Properties.CustomDimensions.create(destinationDimension, `properties/${gaPropertyId}`);
console.log('[COPIED]',result);
} catch (error) {
console.log('[FAILED]', destinationDimension)
console.error(error);
}
} else {
console.info(`[NO ACTION] Dimension with apiName '${ sourceDimension['parameterName'] }' already present in destination! Dimension not added to destination.`, sourceDimension);
}
});
}
Ce que je veux
Arriver à passer le pramètre pageSize = 150 à mon script sur la fonction qui liste les custom dimensions AnalyticsAdmin.Properties.CustomDimensions.list
Ce que j'obtiens
J'ai essayé plusieurs syntaxes et j'ai toujours l'erreur suivante dans la console Appscript lorsque j'utilise le param pageSize.
{ [HttpResponseException: Response Code: 404. Message: <!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 404 (Not Found)!!1</title>
<style>
{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px} > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//w....] name: 'HttpResponseException', statusCode: 404 }