授权用户可以通过 Google 跟踪代码管理器服务访问跟踪代码管理器 API 的数据。借助此服务,跟踪代码管理器用户可以管理跟踪代码管理器帐号、containers、环境、versions、工作区、文件夹、变量、触发器、代码和用户权限。
参考
如需详细了解此服务,请参阅跟踪代码管理器 API V2 的参考文档。
与 Apps 脚本中的所有高级服务一样,跟踪代码管理器服务使用的对象、方法和参数与公共 API 相同。如需了解详情,请参阅如何确定方法签名。
如需报告问题及寻求其他支持,请参阅 Google 跟踪代码管理器帮助中心。
示例代码
下面示例代码演示如何使用跟踪代码管理器服务的部分功能。
创建带有变量、触发器和代码的容器版本。
以下示例代码先使用跟踪代码管理器 API V2 创建一个容器,其名称带有当前日期时间戳,以提高其唯一性。然后,创建一个带有随机值变量的工作区,以及一个可针对任何网页浏览进行触发的触发器。接下来,此示例使用触发器创建任意像素代码,该代码可对 //example.com
触发像素,并在网址末尾附加缓存无效化宏。最后,该示例使用上述实体创建容器版本,记录该版本并将其返回以供日后使用。
/** * Creates a container version for a particular account * with the input accountPath. * @param {string} accountPath The account path. * @return {string} The tag manager container version. */ function createContainerVersion(accountPath) { const date = new Date(); // Creates a container in the account, using the current timestamp to make // sure the container is unique. try { const container = TagManager.Accounts.Containers.create( { 'name': 'appscript tagmanager container ' + date.getTime(), 'usageContext': ['WEB'] }, accountPath); const containerPath = container.path; // Creates a workspace in the container to track entity changes. const workspace = TagManager.Accounts.Containers.Workspaces.create( {'name': 'appscript workspace', 'description': 'appscript workspace'}, containerPath); const workspacePath = workspace.path; // Creates a random value variable. const variable = TagManager.Accounts.Containers.Workspaces.Variables.create( {'name': 'apps script variable', 'type': 'r'}, workspacePath); // Creates a trigger that fires on any page view. const trigger = TagManager.Accounts.Containers.Workspaces.Triggers.create( {'name': 'apps script trigger', 'type': 'PAGEVIEW'}, workspacePath); // Creates a arbitary pixel that fires the tag on all page views. const tag = TagManager.Accounts.Containers.Workspaces.Tags.create( { 'name': 'apps script tag', 'type': 'img', 'liveOnly': false, 'parameter': [ {'type': 'boolean', 'key': 'useCacheBuster', 'value': 'true'}, { 'type': 'template', 'key': 'cacheBusterQueryParam', 'value': 'gtmcb' }, {'type': 'template', 'key': 'url', 'value': '//example.com'} ], 'firingTriggerId': [trigger.triggerId] }, workspacePath); // Creates a container version with the variabe, trigger, and tag. const version = TagManager.Accounts.Containers.Workspaces .create_version( {'name': 'apps script version'}, workspacePath) .containerVersion; console.log(version); return version; } catch (e) { // TODO (Developer) - Handle exception console.log('Failed with error: %s', e.error); } }
发布容器版本并快速预览当前容器草案。
以下示例代码使用跟踪代码管理器 API V2 接受可能在上例中创建的容器版本,并从该版本中检索帐号、容器和版本 ID。该示例利用这些 ID 向全世界实时发布容器版本。最后,该示例创建了新工作区的快速预览,并记录了此快速预览。
/** * Retrieves the container path from a container version path. * @param {string} versionPath The version path. * @return {string} The container path. */ function grabContainerPath(versionPath) { const pathParts = versionPath.split('/'); return pathParts.slice(0, 4).join('/'); } /** * Publishes a container version publically to the world and creates a quick * preview of the current container draft. * @param {object} version The container version. */ function publishVersionAndQuickPreviewDraft(version) { try { const containerPath = grabContainerPath(version.path); // Publish the input container version. TagManager.Accounts.Containers.Versions.publish(version.path); const workspace = TagManager.Accounts.Containers.Workspaces.create( {'name': 'appscript workspace', 'description': 'appscript workspace'}, containerPath); const workspaceId = workspace.path; // Quick previews the current container draft. const quickPreview = TagManager.Accounts.Containers.Workspaces .quick_preview(workspace.path); console.log(quickPreview); } catch (e) { // TODO (Developer) - Handle exceptions console.log('Failed with error: $s', e.error); } }
创建并重新授权用户环境。
以下示例代码使用跟踪代码管理器 API V2 接受容器版本,并提取帐号、容器和版本 ID。然后,利用这些 ID 创建指向相关输入容器版本的用户环境,并予以记录该用户环境。最后,记录已重新授权的用户环境。
/** * Retrieves the container path from a container version path. * @param {string} versionPath The version path. * @return {string} The container path. */ function grabContainerPath(versionPath) { const pathParts = versionPath.split('/'); return pathParts.slice(0, 4).join('/'); } /** * Creates and reauthorizes a user environment in a container that points * to a container version passed in as an argument. * @param {object} version The container version object. */ function createAndReauthorizeUserEnvironment(version) { try { // Creates a container version. const containerPath = grabContainerPath(version.path); // Creates a user environment that points to a container version. const environment = TagManager.Accounts.Containers.Environments.create( { 'name': 'test_environment', 'type': 'user', 'containerVersionId': version.containerVersionId }, containerPath); console.log('Original user environment: ' + environment); // Reauthorizes the user environment that points to a container version. TagManager.Accounts.Containers.Environments.reauthorize( {}, environment.path); console.log('Reauthorized user environment: ' + environment); } catch (e) { // TODO (Developer) - Handle exceptions console.log('Failed with error: $s', e.error); } }
记录账号中的所有电子邮件和容器访问权限。
以下示例代码使用跟踪代码管理器 API V2 查找跟踪代码管理器帐号中所有权限的列表。然后,记录用户的电子邮件地址、容器 ID 以及每个条目的容器访问权限类型。
/** * Logs all emails and container access permission within an account. * @param {string} accountPath The account path. */ function logAllAccountUserPermissionsWithContainerAccess(accountPath) { try { const userPermissions = TagManager.Accounts.User_permissions.list(accountPath).userPermission; for (let i = 0; i < userPermissions.length; i++) { const userPermission = userPermissions[i]; if ('emailAddress' in userPermission) { const containerAccesses = userPermission.containerAccess; for (let j = 0; j < containerAccesses.length; j++) { const containerAccess = containerAccesses[j]; console.log( 'emailAddress:' + userPermission.emailAddress + ' containerId:' + containerAccess.containerId + ' containerAccess:' + containerAccess.permission); } } } } catch (e) { // TODO (Developer) - Handle exceptions console.log('Failed with error: $s', e.error); } }