2019年12月9日 星期一

匯入 Strava 的活動紀錄至 Google Sheet (2020/3/2 更新認證問題)


寫了一個 Google Sheet 函數可以把 Strava 的運動記錄匯入 Google sheet,主要是用來統計每周的里程數以及編寫每周計畫,希望能夠藉此達到年度目標。
就這麼使用兩年,每年都會因為 Strava API 要重新認證,忘記要怎麼處理。今年年末把函數改寫,讓所有需要的認證資訊改從參數讀入,而非寫死在函數裡,並且在需要重新認證時給出提示和網址。想想也許有其他人會有此需求,就把這個 Google sheet 在此分享,大家可以由這些數據建立專屬自己的運動報告。

更新

2019-12-09初版.
2020-01-05 修正資料從指定年份 2 月開始匯入的笨問題.
2020-01-16 才分享沒多久,就因為 Strava 的認證有些改變,幾小時內就會失效。正更新測試中。
2020-03-02 v1.1 更新認證問題. 會記錄 refresh_token 並重新連線,不用一直再認證。並提升一個周行程的例子。

用法

  1. 請「複製」一分Strava_activity_v1.1這個 Google Sheet,裡面有需要的函數。
  2. 函數有 5 個引數:LoadReport(workout_type,year,client_id,client_secret,code)
  3. 一開始的試算表 B1 內只給了 2 個參數,=LoadReport("Run",2019)。代表載入 2019 年起,所有的跑步活動。如果第一引數 "Run" 改成空白"",就會載入所有類型的活動。如果要載入多種活動,可以用逗號分開 Run,Hike
  4. 函數提示要輸入 client_id 和 client_secret。請至 https://www.strava.com/settings/api建立你自己的 API 應用程式。大概如下填寫就好。
  5. 建立完成後會有用戶端 ID (client_id)和用戶端密碼(client_secret),把這兩個數字如下填入即可。 =LoadReport("Run",2019, "client_id", "client_secret")
  6. 函數會要求提供授權碼(code),點連結後給予權限就能得到授權碼,授權碼位於在 redirect 的網址。網址裡有 code=xxxxxxxxxx& 一大串數字,=& 間的 xxxxxxxxx 就是授權碼,請複製下來,當做第五個引數。
    注意: client_id, client_secret, 和 code 這些引數自己知道就好,請不要讓別人知道, 以免活動被看光光!
  7. =LoadReport("Run",2019, "client_id", "client_secret", "上一步的code")。如果沒有意外,等一段時間應該就會匯入 2019 年後所有的跑步活動了。
  8. 載入後你會發現很多數據都要單位換算,但會想要用試算表整理活動的人,對這點麻煩應該都樂此不疲?可以自行設計統計的方式囉。可以把日期切為年、週數等,統計起來比較方便。
  9. 最後可選擇性傳入 AF3:=LoadReport("Run",2019, "client_id", "client_secret", "上一步的code",AF3) 。這一版會自動在 AF3 儲存格內產生一個亂數,把 AF3 當成最後一個引數,可以解決 Google Sheet 不會每次更新函數的問題。
  10. 1.1 版另外提供了一個周記錄給大家參考。可根據心率套用底色,如下。

沒有留言

張貼留言