如何使用javascript将新用户链接到谷歌分析属性/视图

时间:2017-02-21 13:18:29

标签: javascript google-analytics google-analytics-api google-api-js-client

我的要求是,我需要向现有的Google Analytics(分析)帐户的属性添加新的电子邮件ID。

function insertPropertyUserLink() {
  var request = gapi.client.analytics.management.webpropertyUserLinks.insert(
    {
      'accountId': '123456',
      'webPropertyId': 'UA-123456-1',
      'resource': {
        'permissions': {
          'local': [
            'EDIT',
            'MANAGE_USERS'
          ]
        },
        'userRef': {
          'email': 'liz@gmail.com'
        }
      }
    });
  request.execute(function (response) { // Handle the response. });
}

以上代码我是从谷歌文档获得的,我使用以下代码进行授权:

<script>
    var GoogleAuth;
    var SCOPE = 'https://www.googleapis.com/auth/analytics.manage.users';
    function handleClientLoad() {
        // Load the API's client and auth2 modules.
        // Call the initClient function after the modules load.
        gapi.load('client:auth2', initClient);
    }

    function initClient() {
        // Retrieve the discovery document for version 3 of Google Drive API.
        // In practice, your app can retrieve one or more discovery documents.
        var discoveryUrl = 'https://www.googleapis.com/analytics/v3/management/accounts/';

        // Initialize the gapi.client object, which app uses to make API requests.
        // Get API key and client ID from API Console.
        // 'scope' field specifies space-delimited list of access scopes.
        gapi.client.init({
            'apiKey': 'mykey',
            'discoveryDocs': [discoveryUrl],
            'clientId': 'myclientId',
            'scope': SCOPE
        }).then(function () {
            GoogleAuth = gapi.auth2.getAuthInstance();

            // Listen for sign-in state changes.
            GoogleAuth.isSignedIn.listen(updateSigninStatus);

            // Handle initial sign-in state. (Determine if user is already signed in.)
            var user = GoogleAuth.currentUser.get();
            setSigninStatus();

            // Call handleAuthClick function when user clicks on
            //      "Sign In/Authorize" button.
            $('#sign-in-or-out-button').click(function () {
                handleAuthClick();
            });
            $('#revoke-access-button').click(function () {
                revokeAccess();
            });
        });
    }

    function handleAuthClick() {
        if (GoogleAuth.isSignedIn.get()) {
            // User is authorized and has clicked 'Sign out' button.
            GoogleAuth.signOut();
        } else {
            // User is not signed in. Start Google auth flow.
            GoogleAuth.signIn();
        }
    }

    function revokeAccess() {
        GoogleAuth.disconnect();
    }

    function setSigninStatus(isSignedIn) {
        var user = GoogleAuth.currentUser.get();
        var isAuthorized = user.hasGrantedScopes(SCOPE);
        if (isAuthorized) {
            $('#sign-in-or-out-button').html('Sign out');
            $('#revoke-access-button').css('display', 'inline-block');
            $('#auth-status').html('You are currently signed in and have granted ' +
                'access to this app.');
        } else {
            $('#sign-in-or-out-button').html('Sign In/Authorize');
            $('#revoke-access-button').css('display', 'none');
            $('#auth-status').html('You have not authorized this app or you are ' +
                'signed out.');
        }
    }

    function updateSigninStatus(isSignedIn) {
        setSigninStatus();
    }
</script>

<button id="sign-in-or-out-button"
        style="margin-left: 25px">
    Sign In/Authorize
</button>
<button id="revoke-access-button"
        style="display: none; margin-left: 25px">
    Revoke access
</button>

<div id="auth-status" style="display: inline; padding-left: 25px"></div><hr>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script async defer src="https://apis.google.com/js/api.js"
        onload="this.onload=function(){};handleClientLoad()"
        onreadystatechange="if (this.readyState === 'complete') this.onload()">
</script>

我已使用我的API修改了API密钥和客户端ID,并在控制台中为应用启用了Analytics API。任何人都可以帮我将上述两个代码段集成到一个代码片段中,并且可以将新用户添加到分析属性。

1 个答案:

答案 0 :(得分:0)

要解决此问题:**gapi.client.analytics is undefined**

变化:

 `gapi.load(**'client:auth2'**, initClient);` 

gapi.load(**'client:analytics'**, initClient);

它对我有用。