function runReport() {
  const propertyId = '359325548'; // Your GA4 property ID

  try {
    // Metrics
    const sessionsMetric = AnalyticsData.newMetric();
    sessionsMetric.name = 'sessions';
    
    const transactionsMetric = AnalyticsData.newMetric();
    transactionsMetric.name = 'transactions';
    
    const revenueMetric = AnalyticsData.newMetric();
    revenueMetric.name = 'purchaseRevenue';
    
    const engagementRateMetric = AnalyticsData.newMetric();
    engagementRateMetric.name = 'engagementRate';
    
    const bounceRateMetric = AnalyticsData.newMetric();
    bounceRateMetric.name = 'bounceRate';
    
    const totalUsersMetric = AnalyticsData.newMetric();
    totalUsersMetric.name = 'totalUsers';
    
    const engagedSessionsMetric = AnalyticsData.newMetric();
    engagedSessionsMetric.name = 'engagedSessions';
    
    const averagePurchaseRevenueMetric = AnalyticsData.newMetric();
    averagePurchaseRevenueMetric.name = 'averagePurchaseRevenue';
    
    // Dimension
    const deviceCategoryDimension = AnalyticsData.newDimension();
    deviceCategoryDimension.name = 'deviceCategory';

    // Date range
    const dateRange = AnalyticsData.newDateRange();
    dateRange.startDate = '2023-03-31';
    dateRange.endDate = 'today';

    // Country dimension filter
    const countryDimensionFilter = AnalyticsData.newFilter();
    Logger.log(countryDimensionFilter);
    countryDimensionFilter.fieldName = 'country';
    countryDimensionFilter.stringFilter = AnalyticsData.newStringFilter();
    countryDimensionFilter.stringFilter.value = 'Australia';
    Logger.log(countryDimensionFilter);
    
    const request = AnalyticsData.newRunReportRequest();
    request.dimensions = [deviceCategoryDimension];
    request.metrics = [sessionsMetric, transactionsMetric, revenueMetric, engagementRateMetric, bounceRateMetric, totalUsersMetric, engagedSessionsMetric, averagePurchaseRevenueMetric];
    request.dateRanges = [dateRange];
    request.dimensionFilter = countryDimensionFilter; // Adjusted to use dimensionFilter

    const report = AnalyticsData.Properties.runReport(request, 'properties/' + propertyId);
    if (!report.rows) {
      console.log('No rows returned.');
      return;
    }

    const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = spreadsheet.getSheetByName("device");
    
    // If the sheet doesn't exist, create a new one
    if (!sheet) {
      sheet = spreadsheet.insertSheet("device");
    } else {
      // Clear existing data if the "device" sheet already exists
      sheet.clear();
    }

    // Append the headers
    const headers = report.dimensionHeaders.concat(report.metricHeaders).map(header => header.name);
    sheet.appendRow(headers);

    // Append the results
    const rows = report.rows.map(row => {
      const dimensionValues = row.dimensionValues.map(value => value.value);
      const metricValues = row.metricValues.map(value => value.value);
      return dimensionValues.concat(metricValues);
    });

    sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);

    console.log('Data saved to "device" tab.');
  } catch (e) {
    console.log('Error:', e);
  }
}

我正在运行此代码,但它给出了下面的错误.请帮我修一下好吗?

错误:{[GoogleJsonResponseException:对analyticsdata.Properties.runReport的API调用失败,错误为:收到无效的JSON负载.名为"fieldName"的未知名称:找不到字段. 收到无效的JSON负载."DIMENSION_FILTER"处的未知名称"StringFilter":找不到字段.] 详细信息: {消息:‘接收到无效的JSON有效负载.’DIMENSION_FILTER‘处的未知名称"fieldName":找不到字段.收到无效的JSON有效负载.DIMENSION_FILTER‘处的未知名称"StringFilter":找不到字段.’, 代码:400}, 名称:‘GoogleJsonResponseException’}

推荐答案

试着改编一下这样的东西:

const dimensionfilter = AnalyticsData.newFilterExpression()
dimensionfilter.filter = AnalyticsData.newFilter()
dimensionfilter.filter.fieldName = 'country'
dimensionfilter.filter.stringFilter = AnalyticsData.newStringFilter()
dimensionfilter.filter.stringFilter.value = 'Italy'

Node.js相关问答推荐

仅当所需文档是最后一个文档时才更新MongoDB,否则插入

在Node.js下使用PostgreSQL客户端聚合PostgreSQL中的用户定义类型

Firebase-admin筛选器.或只考虑第一个WHERE子句

在Android Studio中react 本机构建失败:未正确检测到Node.js版本

使用ReadableStream.管道时NodeJS Crypto Hash不正确

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

无法使用 Express 设置会话 cookie 的过期日期

如何从mongoose 对象内嵌套的数组中提取数组元素?

我应该如何解决这个 Angular node 包模块依赖冲突?

等待不在 Express.js 中处理 res.app.render

用户与mongoose 的完美搭配

如何使用来自前一阶段的另一个数组的聚合mongoose 在数组中添加字段

使用服务帐户将 Firebase 应用程序部署到 Heroku(使用 dotenv 的环境变量)

如何防止 node.js 中的内存泄漏?

如何从命令行在 Node.js 上运行 Jasmine 测试

node.js 模块和函数中this的含义

Mongoose - 保存字符串数组

路由后的 Node Express 4 中间件

Google Firebase 错误(函数返回未定义、预期的 Promise 或值)

Puppeteer 等待所有图像加载然后截图