icon-mess
Chat Zalo
(24/7)
zalo

Cách kết nối Strava API với Google Sheets và Google data studio

Bạn muốn kết nối API Strava với Google Trang tính và tạo một báo cáo trực quan tuyệt đẹp trong Google Data Studio? Trong bài viết này, Công ty dịch vụ SEO – Thiết kế Website Limoseo sẽ giúp các bạn tìm hiểu Cách kết nối Strava API với Google Sheets và Google data studio một cách đơn giản nhé.

Cách kết nối Strava API với Google Sheets và Google data studio

1. Kết nối API Strava với Google sheets

Thực hiện theo các cách kết nối Strava API với Google Sheets và Google data studio sau để kết nối với API Strava bằng Google Trang tính.

1.1 Thiết lập Google sheets của bạn

  • Mở một Google Sheets mới (mẹo: gõ sheet.new trong cửa sổ trình duyệt!) Nhập tiêu đề Google Sheets: “ID”, “Name”, “Type” và “Blank” vào các ô A1 , B1 , C1 và D1 , tương ứng.
  • Mở Trình chỉnh sửa tập lệnh (tools > script editor) Đặt tên cho tập lệnh mới, ví dụ: Strava Sheets Integration Tạo một tệp tập lệnh khác (File > New > Script tệp) và đặt tên là oauth.gs
  • script
  • Thêm thư viện OAuth 2.0 Apps Script vào dự án của bạn (resources > libraries…)
  • Nhập ID này vào trường “add a library”: 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
  • Chọn phiên bản mới nhất của thư viện từ menu thả xuống (phiên bản hiện tại 34.9.2019) và nhấn nút “save”.
Kết nối API Strava với Google sheets

1.2 Thêm mã code

Trong tệp oauth.gs của bạn , hãy thêm đoạn mã code này:

var CLIENT_ID = `’;

var CLIENT_SECRET = ”;

// configure the service

function getStravaService() {

return OAuth2.createService(‘Strava’)

.setAuthorizationBaseUrl(‘https://www.strava.com/oauth/authorize’)

.setTokenUrl(‘https://www.strava.com/oauth/token’)

.setClientId(CLIENT_ID)

.setClientSecret(CLIENT_SECRET)

.setCallbackFunction(‘authCallback’)

.setPropertyStore(PropertiesService.getUserProperties())

.setScope(‘activity:read_all’);

}

//handle the callback

function authCallback(request) {

var stravaService = getStravaService();

var isAuthorized = stravaService.handleCallback(request);

nếu (isAuthorized) {

return HtmlService.createHtmlOutput(‘Success! You can close this tab.’);

}

return HtmlService.createHtmlOutput(‘Denied. You can close this tab’);

}

Trong file code.gs, hãy thêm đoạn code sau:

// custom menu

function onOpen() {

  var ui = SpreadsheetApp.getUi();

  ui.createMenu(‘Strava App’)

    .addItem(‘Get data’, ‘getStravaActivityData’)

    .addToUi();

}

// Get athlete activity data

function getStravaActivityData() {

  // get the sheet

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getSheetByName(‘Sheet1’);

  // call the Strava API to retrieve data

  var data = callStravaAPI();

  // empty array to hold activity data

  var stravaData = [];

  // loop over activity data and add to stravaData array for Sheet

  data.forEach(function(activity) {

    var arr = [];

    arr.push(

      activity.id,

      activity.name,

      activity.type,

      activity.distance

    );

    stravaData.push(arr);

  });

  // paste the values into the Sheet

  sheet.getRange(sheet.getLastRow() + 1, 1, stravaData.length, stravaData[0].length).setValues(stravaData);

}

// call the Strava API

function callStravaAPI() {

  // set up the service

  var service = getStravaService();

  if (service.hasAccess()) {

    Logger.log(‘App has access.’);

    var endpoint = ‘https://www.strava.com/api/v3/athlete/activities’;

    var params = ‘?after=1546300800&per_page=200’;

    var headers = {

      Authorization: ‘Bearer ‘ + service.getAccessToken()

    };

    var options = {

      headers: headers,

       method : ‘GET’,

      muteHttpExceptions: true

    }

    var response = JSON.parse(UrlFetchApp.fetch(endpoint + params, options));

     return response;  

  }

  else {

    Logger.log(“App has no access yet.”);

    // open this url to gain authorization from github

    var authorizationUrl = service.getAuthorizationUrl()

    Logger.log(“Open the following URL and re-run the script: %s”,

        authorizationUrl);

  }

}

Lưu ý về biến Params

Xem xét biến params:

 var params = ‘? after = 1546300800 & per_page = 200’

Tham số “After” có nghĩa là mã code sẽ không trả về các hàm Strava cho đến sau ngày chúng tôi đã chỉ định.

 Phần thứ hai của biến tham số là biến per_page mà chúng tôi đặt thành 200. Đây là số lượng bản ghi tối đa mà API sẽ trả về trong mảng.

Nếu giá trị lớn hơn 200, hãy thêm tham số Page và đặt thành 2,3,4,… lấy phần còn lại của các chức năng, ví dụ:

 var params = ‘? after = 1546300800 & per_page = 200 & page = 2’

 Cuối cùng, bạn đặt chúng vào một vòng lặp nhỏ (tiếp tục lặp cho đến khi API trả về dữ liệu và dừng khi nó trả về trống).

Lưu ý về phân tích Data

Tập lệnh trên phân tích cú pháp phản hồi API và thêm 4 giá trị vào bảng Google Sheets là: ID, Type, Name và Distance.

Tuy nhiên, bạn có thể dễ dàng thêm các trường. Ví dụ: bạn có thể thêm trường Total Elevation như sau:

activity.total_elevation_gai 

Khi bạn thêm nhiều trường hơn vào bảng, hãy đảm bảo thay đổi kích thước khu vực bạn nhập dữ liệu vào Google sheets. Kích thước và phạm vi của bảng phải giống nhau.

1.3 Thiết lập công cụ API Strava của bạn

Bạn cần tạo ứng dụng của riêng mình trên nền tảng Strava mà Google sheets có thể kết nối.

  • Đăng nhập vào Strava và đi tới Settings > My API Application của tôi.
  • Thao tác này sẽ đưa bạn đến trang cài đặt ứng dụng API.
  • Đặt tên, trang web và mô tả cho ứng dụng của bạn.
  • Bạn có thể đặt bất cứ thứ gì bạn muốn ở đây.. Các khóa mở khóa API Strava được chỉ định trong phần “authorization callback domain”  script.google.com
  • Tiếp theo, lấy ID khách hàng của bạn và đính kèm nó vào biến CLIENT_ID trên dòng 1 của mã Apps Script trong tệp oauth.gs.
  • Tương tự, lấy bí mật của ứng dụng khách của bạn và đính kèm nó vào biến CLIENT_SECRET trên dòng 2 của mã apps script oauth.gs.

1.4 Xác nhận yêu cầu của bạn

Chạy chức năng onOpen của trình soạn thảo tập lệnh và xác thực ứng dụng được yêu cầu (ứng dụng bảng tính và dịch vụ bên ngoài):

Nếu quá trình của bạn không giống như thế này và bạn thấy một dấu hiệu cảnh báo, đừng lo lắng. Nhấp vào Advanced và chấp nhận ở đó.

  • Quay lại Google sheets và bạn sẽ thấy một tùy chọn menu tùy chỉnh mới có tên “Ứng dụng Strava”.
  • Nhấp vào nó và chọn “Get data” từ trình đơn thả xuống.
  • Không có gì xảy ra trong lần đầu tiên bạn sử dụng Google Sheets. 
  • Quay lại trình chỉnh sửa tập lệnh và mở nhật ký (View > Logs). Bạn sẽ thấy một URL ủy quyền mà bạn cần sao chép và dán vào tab mới của trình duyệt.
  • Nó sẽ yêu cầu bạn cấp quyền cho ứng dụng Strava:

Vậy là xong, bạn đã xác nhận đơn đăng ký của mình.

1.5 Nhận dữ liệu Strava của bạn!

  • Chạy lại chức năng “Get data” và lần này điều kỳ diệu sẽ xảy ra.
  • Hàng và dòng dữ liệu Strava sẽ xuất hiện trong Google Sheets của bạn.
  • Trong cấu hình hiện tại, như bạn có thể thấy trong hình trên, mã phân tích dữ liệu do API trả về và thêm 4 giá trị vào Google Sheets: ID, Type , Name và Distance 
  • Tất nhiên, bạn có thể trích xuất một số hoặc tất cả các trường do API trả về.

Trong dashboard của studio data, chúng tôi sử dụng dữ liệu tạm thời để xác định ngày nào trong tuần và ngày nào trong tuần diễn ra hoạt động. Chúng tôi cũng xem xét các trường đo thời lượng của một hành động.

1.6 Đặt trình kích hoạt để tự động gọi API

Khi bạn đã tạo kết nối cơ bản ở trên, có thể bạn sẽ muốn thiết lập trình kích hoạt gọi API mỗi ngày một lần để truy xuất dữ liệu mới.

Bạn muốn lọc dữ liệu cũ để tránh các bản ghi trùng lặp. Bộ lọc cho phép bạn so sánh dữ liệu mới với các giá trị trong bảng tính và ghi đè lên các giá trị đã tồn tại.

Tạo Dashboard trong Google Data Studio

2. Tạo Dashboard trong Google Data Studio

Thông qua hướng dẫn cách kết nối Strava API với Google Sheets và Google data studio. Trước tiên, hãy tạo các trường được tính toán trong Apps Script để tính ngày trong tuần và số tuần. Hãy thêm bốn trường này vào tệp file code.gs:

(new Date(activity.start_date_local)).getDay(), // sunday – saturday: 0 – 6

parseInt(Utilities.formatDate(new Date(activity.start_date_local), SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), “w”)), // week number

(new Date(activity.start_date_local)).getMonth() + 1, // add 1 to make months 1 – 12

(new Date(activity.start_date_local)).getYear() // get year

Và chuyển đổi khoảng cách tính bằng mét vào một khoảng cách trong dặm trong tập tin code.gs Apps Script :

(activity.distance * 0.000621371).toFixed(2), // distance in miles

  • Từ đó, hãy tạo một  dashboard mới trong Data Studio và kết nối trang tổng quan đó với  Google Sheets.
  • Biểu đồ nhật ký hoạt động là biểu đồ bong bóng với ngày trong tuần trên trục x và số tuần trên trục y, cả hai đều ở dạng trung bình (vì vậy mỗi biểu đồ được hiển thị riêng). Kích thước của bong bóng là distance  và name được chọn làm dimension.
  • Tiếp theo, chúng tôi thêm bộ lọc year để có thể xem riêng từng năm.
  • Chúng tôi hoàn thành dashboard bằng cách thêm biểu trưng Strava và chọn chủ đề màu cam.

(Lưu ý: Data Studio cũng có API Strava mã nguồn mở, vì vậy bạn có thể nhanh chóng thêm nó vào dashboard Strava của mình mà không cần phải tự viết mã.)

Với điều này, bạn đã tạo một báo cáo trực quan tuyệt đẹp về dữ liệu Strava của mình. hãy truy cập Công ty dịch vụ SEO – Thiết kế Website Limoseo ngay hôm nay để biết thêm nhiều Cách kết nối Strava API với Google Sheets và Google data studio và các thủ thuật máy tính hữu ích nhé.

Limoseo - Công ty Dịch vụ SEO & Thiết kế Website
Limoseo – Công ty Dịch vụ SEO & Thiết kế Website
Đánh giá