Tự động truy cập vào dữ liệu Google Analytics trong Google Trang tính

Nick Mihailovski, Nhóm Google Analytics API – tháng 8 năm 2012

Hướng dẫn này mô tả cách truy cập vào API Quản lý và API Báo cáo chính trong Google Trang tính bằng Apps Script.


Giới thiệu

Bạn có thể sử dụng API Google AnalyticsGoogle Apps Script để truy cập vào dữ liệu Google Analytics từ Google Trang tính. Cách này rất hiệu quả vì cho phép bạn tận dụng mọi tính năng tuyệt vời của Google Trang tính có dữ liệu phân tích của bạn, chẳng hạn như các công cụ dễ dàng chia sẻ, cộng tác, lập biểu đồ và trực quan hoá.

Hướng dẫn này sẽ chỉ cho bạn đoạn mã cần thiết để truy cập vào dữ liệu Google Analytics trong Google Trang tính bằng Google Apps Script.

Tổng quan

Hướng dẫn này sẽ chỉ cho bạn cách đăng ký và định cấu hình môi trường Apps Script để sử dụng API Google Analytics. Sau khi định cấu hình, hướng dẫn này sẽ hướng dẫn bạn cách truy xuất mã chế độ xem (hồ sơ) cho người dùng được uỷ quyền bằng API Quản lý. Sau đó, cách dùng mã chế độ xem (hồ sơ) để truy vấn Core Reporting API để truy xuất 250 từ khoá hàng đầu về kết quả tìm kiếm trên thiết bị di động từ Google. Cuối cùng, kết quả sẽ được chèn vào Bảng tính Google. Sau khi bạn có dữ liệu, phần hướng dẫn này cũng sẽ thảo luận về cách tự động truy xuất dữ liệu.

Khi tạo một ứng dụng bằng API Google Analytics và Apps Script, thường bạn sẽ thực hiện các bước sau:

  • Bật API Google Analytics trong Google Trang tính
  • Làm việc với API Google Analytics

Hãy cùng xem chi tiết từng bước.

Bật API Google Analytics trong Apps Script

Để cho phép truy cập vào dữ liệu Google Analytics của bạn từ trong Google Trang tính, hãy làm theo các bước sau:

  1. Tạo một tệp Google Trang tính. Đặt một cái tên thú vị.
  2. Tạo Apps Script mới.
    1. Trong trình đơn, hãy chuyển đến Tiện ích > Apps Script.
    2. Nếu một trình đơn bật lên, bạn chỉ cần nhấp vào Blank Project (Dự án trống).
    3. Đặt tên cho dự án. Hãy đảm bảo tên này thật thú vị.

Sau khi có tập lệnh mới, bạn cần bật Dịch vụ Google Analytics.

  1. Trong trình chỉnh sửa tập lệnh, hãy chọn Tài nguyên > Các dịch vụ nâng cao của Google...
  2. Trong hộp thoại xuất hiện, hãy nhấp vào nút chuyển bật/tắt bên cạnh API Google Analytics.
  3. Ở cuối hộp thoại, hãy nhấp vào đường liên kết đến Google Developers Console.
  4. Trong bảng điều khiển mới, hãy nhấp lại vào nút chuyển bật/tắt bên cạnh API Google Analytics. (Sau khi bật, nút này sẽ chuyển lên đầu trang.)
  5. Quay lại trình chỉnh sửa tập lệnh rồi nhấp vào OK trong hộp thoại.

Một hộp thoại nhỏ màu vàng sẽ bật lên cho biết bạn đã thêm thành công dịch vụ API của Google mới vào tập lệnh của mình. Bây giờ, bạn đã sẵn sàng bắt đầu viết tập lệnh đầu tiên.

Làm việc với API Google Analytics

Tập lệnh trong hướng dẫn này sẽ truy vấn API Google Analytics cho 250 từ khoá hàng đầu trên trang kết quả tìm kiếm trên thiết bị di động của Google, sau đó xuất kết quả sang Google Trang tính. Để thực hiện việc này, tập lệnh sẽ trải qua các bước sau:

  • Truy xuất chế độ xem đầu tiên của người dùng được ủy quyền (hồ sơ).
  • Truy vấn API Báo cáo chính cho dữ liệu.
  • Chèn dữ liệu vào bảng tính.

Thêm hàm sau vào dự án trống.

function runDemo() {
  try {

    var firstProfile = getFirstProfile();
    var results = getReportDataForProfile(firstProfile);
    outputToSpreadsheet(results);

  } catch(error) {
    Browser.msgBox(error.message);
  }
}

Trong mã trên, khối try...catch được dùng để xử lý mọi lỗi API. Nếu xảy ra lỗi, quá trình thực thi chương trình sẽ tạm dừng và lỗi sẽ hiển thị trong một hộp thông báo. Trong khối try, một hàm được dùng để thực hiện từng bước mà tập lệnh sẽ trải qua. Bây giờ, hãy thêm mã cho từng hàm này.

Truy xuất chế độ xem đầu tiên của người dùng được ủy quyền (Hồ sơ)

Trong Google Analytics, mỗi báo cáo thuộc về một chế độ xem (hồ sơ) và được xác định bằng một mã chế độ xem (hồ sơ). Vì vậy, khi chỉ định một truy vấn cho dữ liệu báo cáo, bạn cũng phải chỉ định mã chế độ xem (hồ sơ) của chế độ xem (hồ sơ) mà bạn muốn truy xuất dữ liệu từ đó.

API Quản lý Google Analytics cung cấp quyền truy cập vào tất cả các tài khoản, thuộc tính web và thực thể chế độ xem (hồ sơ) thuộc về một người dùng. Mỗi thực thể thuộc một hệ phân cấp và bạn có thể truyền tải hệ phân cấp này theo phương thức lập trình để truy xuất mã chế độ xem (hồ sơ) cho người dùng được uỷ quyền.

Hàm thứ hai mà chúng ta sẽ viết sẽ truyền tải xuống hệ phân cấp API Quản lý và trả về chế độ xem đầu tiên của người dùng (hồ sơ). Sao chép và dán mã sau vào dự án Apps Script:

function getFirstProfile() {
  var accounts = Analytics.Management.Accounts.list();
  if (accounts.getItems()) {
    var firstAccountId = accounts.getItems()[0].getId();

    var webProperties = Analytics.Management.Webproperties.list(firstAccountId);
    if (webProperties.getItems()) {

      var firstWebPropertyId = webProperties.getItems()[0].getId();
      var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId);

      if (profiles.getItems()) {
        var firstProfile = profiles.getItems()[0];
        return firstProfile;

      } else {
        throw new Error('No views (profiles) found.');
      }
    } else {
      throw new Error('No webproperties found.');
    }
  } else {
    throw new Error('No accounts found.');
  }
}

Trong hàm này, bộ sưu tập Tài khoản được truy vấn trước bằng phương thức Analytics.Management.Accounts.list. Nếu người dùng được uỷ quyền có tài khoản Google Analytics, thì mã nhận dạng của tài khoản đầu tiên sẽ được truy xuất. Tiếp theo, hệ thống sẽ truy vấn bộ sưu tập thuộc tính web bằng cách gọi phương thức Analytics.Management.Webproperties.list và truyền phương thức mà mã tài khoản được truy xuất ở bước trước. Nếu tồn tại các thuộc tính web thì cuối cùng, bộ sưu tập chế độ xem (hồ sơ) sẽ được truy vấn bằng phương thức Analytics.Management.Profiles.list. Cả mã tài khoản và mã tài sản web đều được truyền vào phương thức này dưới dạng tham số. Nếu có chế độ xem (hồ sơ) thì chế độ xem (hồ sơ) đầu tiên sẽ được trả về.

Nếu xảy ra lỗi API bất kỳ lúc nào hoặc nếu phản hồi của API không có kết quả nào, thì hệ thống sẽ gửi lỗi kèm theo một thông báo mô tả rằng không tìm thấy kết quả nào. Khối catch trong hàm runDemo ở trên sẽ phát hiện lỗi này và in thông báo cho người dùng.

Sau khi trả về tập lệnh, tập lệnh đó hiện có thể truy vấn dữ liệu báo cáo.

Truy vấn API Báo cáo chính cho dữ liệu.

Sau khi có mã chế độ xem (hồ sơ), bạn hãy sử dụng API báo cáo chính để truy vấn dữ liệu báo cáo Google Analytics. Trong phần này, bạn sẽ tìm hiểu cách truy vấn API này bằng Apps Script.

Thêm mã sau vào dự án Apps Script:

function getReportDataForProfile(firstProfile) {

  var profileId = firstProfile.getId();
  var tableId = 'ga:' + profileId;
  var startDate = getLastNdays(14);   // 2 weeks (a fortnight) ago.
  var endDate = getLastNdays(0);      // Today.

  var optArgs = {
    'dimensions': 'ga:keyword',              // Comma separated list of dimensions.
    'sort': '-ga:sessions,ga:keyword',       // Sort by sessions descending, then keyword.
    'segment': 'dynamic::ga:isMobile==Yes',  // Process only mobile traffic.
    'filters': 'ga:source==google',          // Display only google traffic.
    'start-index': '1',
    'max-results': '250'                     // Display the first 250 results.
  };

  // Make a request to the API.
  var results = Analytics.Data.Ga.get(
      tableId,                    // Table id (format ga:xxxxxx).
      startDate,                  // Start-date (format yyyy-MM-dd).
      endDate,                    // End-date (format yyyy-MM-dd).
      'ga:sessions,ga:pageviews', // Comma seperated list of metrics.
      optArgs);

  if (results.getRows()) {
    return results;

  } else {
    throw new Error('No views (profiles) found');
  }
}

function getLastNdays(nDaysAgo) {
  var today = new Date();
  var before = new Date();
  before.setDate(today.getDate() - nDaysAgo);
  return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd');
}

Phần đầu tiên của mã tạo truy vấn API Báo cáo chính bằng cách sử dụng phương thức Analytics.Data.Ga.get. Phương thức này chấp nhận một loạt thông số chỉ định loại báo cáo cần truy xuất. Mỗi truy vấn API Báo cáo chính bao gồm một bộ tham số bắt buộc và không bắt buộc. Các tham số bắt buộc được chuyển tới phương thức dưới dạng tham số, trong khi các tham số không bắt buộc được truyền dưới dạng đối tượng.

Tham số table ID là bắt buộc và được tạo bằng cách kết hợp tiền tố ga: với mã chế độ xem (hồ sơ). Mã này sẽ tạo mã bảng bằng cách sử dụng mã chế độ xem (hồ sơ) được truy xuất ở bước trước. Ngày bắt đầu và ngày kết thúc cũng là thông tin bắt buộc và chỉ định phạm vi ngày của dữ liệu cần truy xuất. Cả hai đều được tính dựa trên ngày hôm nay bằng cách sử dụng hàm getLastNdays. Cuối cùng, tất cả tham số không bắt buộc được chuyển đến hàm bằng đối tượng optArgs.

Khi phương thức Analytics.Data.Ga.get chạy, một yêu cầu sẽ được gửi đến API Báo cáo chính. Nếu xảy ra lỗi, thì lỗi đó sẽ được đưa vào khối try...catch được xác định trong phương thức runDemo bên ngoài. Nếu yêu cầu thành công, kết quả sẽ được trả về.

Chèn dữ liệu vào bảng tính

Bước cuối cùng trong tập lệnh là xuất kết quả từ API Báo cáo chính sang Google Trang tính. Phương thức outputToSpreadsheet thực hiện việc này. Hãy thêm mã sau vào dự án của bạn:

function outputToSpreadsheet(results) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();

  // Print the headers.
  var headerNames = [];
  for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) {
    headerNames.push(header.getName());
  }
  sheet.getRange(1, 1, 1, headerNames.length)
      .setValues([headerNames]);

  // Print the rows of data.
  sheet.getRange(2, 1, results.getRows().length, headerNames.length)
      .setValues(results.getRows());
}

Trước tiên, hàm này chèn một trang tính mới vào bảng tính đang hoạt động. Sau đó, hệ thống sẽ chèn tất cả tiêu đề và dữ liệu báo cáo vào trang tính. Để biết thêm các mẹo về cách chèn dữ liệu vào Google Trang tính, hãy đọc bài viết Ghi dữ liệu từ đối tượng JavaScript vào bảng tính trong hướng dẫn Lưu trữ dữ liệu trong bảng tính.

Chạy tập lệnh

Sau khi thêm toàn bộ mã vào dự án, bạn có thể chạy dự án đó.

  • Trên thanh công cụ của trình chỉnh sửa tập lệnh, trong trình đơn thả xuống để chọn hàm, hãy chọn runDemo.
  • Tiếp theo, hãy nhấp vào nút play.

Lần đầu tiên bạn chạy tập lệnh này, một hộp bật lên sẽ xuất hiện yêu cầu bạn cho phép tập lệnh này truy cập vào dữ liệu tài khoản Google Analytics của bạn.

Nhấp vào cho phép.

Sau khi bạn nhấp vào, một trang mới được lưu trữ trên google.com sẽ mở ra và nhắc bạn cấp cho tập lệnh này quyền truy cập vào dữ liệu của bạn. Sau khi nhấp vào cho phép, bạn sẽ được chuyển đến trang xác nhận. Tại thời điểm này, tập lệnh hiện có thể truy cập vào dữ liệu Google Analytics của bạn và tập lệnh có thể tiếp tục thực thi.

Sau khi tập lệnh chạy, hãy nhấp để chuyển đến cửa sổ có Google Trang tính. Bạn sẽ thấy tất cả dữ liệu từ khoá được trả về từ API hoặc hộp thông báo lỗi.

Tự động hoá tập lệnh

Tại thời điểm này, bạn sẽ có một tập lệnh truy vấn API Google Analytics. Giờ đây, có thể bạn muốn tự động hoá tập lệnh này để truy xuất dữ liệu mới mỗi đêm. Apps Script giúp việc tự động hoá trở nên rất dễ dàng bằng cách sử dụng tính năng triggers.

Để tự động hoá tập lệnh này, hãy làm theo các bước sau:

  • Trong thanh công cụ của trình chỉnh sửa tập lệnh, hãy nhấp vào Resources -> All your triggers...
  • Nhấp vào Add a new trigger. Hộp thoại kích hoạt sẽ xuất hiện.
  • Định cấu hình điều kiện kích hoạt để thực thi phương thức runDemo mỗi đêm
    • Bạn phải đặt trình đơn thả xuống Run thành: runDemo
    • Bạn nên đặt trình đơn thả xuống Events thành: Time-driven, Day timerMidnight to 1am.

Sau khi bạn định cấu hình, tập lệnh này sẽ chạy hằng đêm và cung cấp cho bạn dữ liệu mới vào buổi sáng.

Nếu có lỗi xảy ra vào ban đêm thì bạn sẽ muốn nhận thông báo. Apps Script cũng cho phép bạn gửi cảnh báo qua email nếu có lỗi xảy ra. Để định cấu hình trạng thái này, trong hộp thoại về điều kiện kích hoạt, hãy nhấp vào đường liên kết notifications. Một hộp thoại mới sẽ bật lên và cho phép bạn thiết lập email mà bạn muốn gửi thông báo lỗi.

Kết luận

bạn đã đăng ký và cấp quyền truy cập thành công vào tập lệnh của mình. Bạn đã truy vấn API Quản lý nhiều lần để truy xuất một mã nhận dạng (hồ sơ) chế độ xem. Sau đó, bạn dùng mã chế độ xem (hồ sơ) để truy vấn API báo cáo chính nhằm truy xuất dữ liệu và xuất dữ liệu đó vào Google Trang tính.

Nhờ sử dụng các kỹ thuật được mô tả trong phần hướng dẫn, bạn sẽ có thể thực hiện những phân tích phức tạp hơn, có được thông tin chi tiết hơn, xây dựng trang tổng quan tuỳ chỉnh và giảm nhiều thời gian chạy báo cáo thủ công.

Một số hướng dẫn thú vị khác có thể giúp bạn hiểu rõ hơn về API Google Analytics và Google Apps Script: