태그 관리자 서비스

Google 태그 관리자 서비스는 승인된 사용자가 태그 관리자 API 데이터에 액세스할 수 있도록 지원합니다. 이 서비스를 통해 태그 관리자 사용자는 태그 관리자 계정, containers, 환경, versions, 작업공간, 폴더, 변수, 트리거, 태그, 사용자 권한을 관리할 수 있습니다.

참조

이 서비스에 관한 자세한 내용은 태그 관리자 API V2 참조 문서를 확인하세요.

태그 관리자 서비스는 Apps Script의 모든 고급 서비스와 마찬가지로 공개 API와 동일한 객체, 메서드, 매개변수를 사용합니다. 자세한 내용은 메서드 서명 확인 방법을 참조하세요.

문제를 신고하고 다른 지원을 받으려면 Google 태그 관리자 고객센터를 참고하세요.

샘플 코드

아래의 샘플 코드에는 태그 관리자 서비스의 몇 가지 기능을 사용하는 방법이 나와 있습니다.

변수, 트리거, 태그를 사용하여 컨테이너 버전을 만듭니다.

아래 샘플 코드에서는 먼저 태그 관리자 API V2를 사용하여 현재 날짜로 타임스탬프가 지정된 이름으로 컨테이너를 만들어 고유 가능성을 높입니다. 그런 다음 임의의 값 변수 및 모든 페이지 조회에 대해 실행되는 트리거를 사용하여 작업공간을 만듭니다. 그런 다음 샘플은 트리거를 사용하여 URL 끝에 추가된 캐시 버스터와 함께 픽셀을 //example.com에 실행하는 임의의 픽셀 태그를 만듭니다. 마지막으로 샘플은 위의 항목으로 컨테이너 버전을 만들고 버전을 로깅한 후 나중에 사용할 수 있도록 반환합니다.

advanced/tagManager.gs
/**
 * 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를 활용하여 컨테이너 버전을 전 세계에 실시간으로 게시합니다. 마지막으로 샘플은 새 작업공간의 간단한 미리보기를 만들고 빠른 미리보기를 로깅합니다.

advanced/tagManager.gs
/**
 * 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를 사용하여 입력 컨테이너 버전을 가리키고 사용자 환경을 로깅하는 사용자 환경을 만듭니다. 이 샘플은 재승인된 사용자 환경을 로깅하는 것으로 끝납니다.

advanced/tagManager.gs
/**
 * 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, 컨테이너 액세스 권한 유형을 로깅합니다.

advanced/tagManager.gs
/**
 * 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);
  }
}