使用 Google Analytics 管理 API 和应用脚本提取 GA4 媒体资源列表

2024-02-17

想知道是否有人有使用新的 Analytics Admin API 将 GA 帐户和属性列表导出到电子表格的经验。

我过去曾使用管理 API 来实现此目的,但这限制了我们只能使用 UA 属性,我希望也能在此处包含 GA4 属性。

我尝试过将旧脚本转换为新 API,但我什至没有成功提取帐户名。

function listGA4Accounts() {
  var createss = SpreadsheetApp.create("Google Analytics Accounts");
  var ssid = createss.getId();
  var openss = SpreadsheetApp.openById(ssid);
  var insertsheet = openss.insertSheet('Google Analytics Schema');
  insertsheet.setFrozenRows(1);
  insertsheet.getRange("A1:D1").setValues([['displayName', 'Account ID', 'Property Name', 'Property ID']]);
  var sheet = SpreadsheetApp.openById(createss.getId()).getSheetByName("Google Analytics Schema")
  var accounts = AnalyticsAdmin.Accounts.list();
  if (accounts && !accounts.error) {
    accounts = accounts.accounts;
  //  Logger.log(accounts[0]);
    for (var i = 0, account; account = accounts[i]; i++) {
       sheet.appendRow([accounts.accounts[i].displayName]);
    }
  }
}

我也一直在为此苦苦挣扎。这是我经过大量尝试和错误后得出的结论:

function listAccounts() {
  try {
    accounts = AnalyticsAdmin.AccountSummaries.list();
    //Logger.log(accounts);
    if (!accounts.accountSummaries || !accounts.accountSummaries.length) {
      Logger.log('No accounts found.');
      return;
    }

    Logger.log(accounts.accountSummaries.length + ' accounts found');
    for (let i = 0; i < accounts.accountSummaries.length; i++) {
      const account = accounts.accountSummaries[i];
      Logger.log('** Account: name "%s", displayName "%s".', account.name, account.displayName);

      if (account.propertySummaries) {
        properties = AnalyticsAdmin.Properties.list({filter: 'parent:' + account.account});
        if (properties.properties !== null) {
          for (let j = 0 ; j < properties.properties.length ; j++) {
            var propertyID = properties.properties[j].name.replace('properties/','');
            Logger.log("GA4 Property: " + properties.properties[j].displayName + '(' + propertyID + ')')
          }
        }
      } else {
        var accountID = account.account.replace('accounts/','');
        var webProperties = Analytics.Management.Webproperties.list(accountID);
        for (var j = 0; j < webProperties.items.length; j++) {
          Logger.log("UA Property: " + webProperties.items[j].name + '(' + webProperties.items[j].id  + ')');
          var profiles = Analytics.Management.Profiles.list(accountID, webProperties.items[j].id);
          for (var k = 0; k < profiles.items.length; k++) {
            Logger.log('Profile:' + profiles.items[k].name);
          }
        }
      }
    }
  } catch (e) {
    // TODO (Developer) - Handle exception
    Logger.log('Failed with error: %s', e.error);
  }
}

并不是说这是正确的方法...但它似乎确实能够提取我所有的 UA 和 GA4 属性。

如果您只需要 GA4 媒体资源,则可以省略“if (account.propertySummaries)”上的 else。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google Analytics 管理 API 和应用脚本提取 GA4 媒体资源列表 的相关文章

随机推荐