体重や体脂肪率が毎日Google Spreadsheetに更新されるようになった
いらん前書き
オッサンになるって怖いです。いきなり家の中から4年も前にサービス終了したデバイスが見つかったりします。4年なんて言ったら、大学1年生にしてみたら高校どころか中学まで遡ってしまう、過去も過去、もはや黒歴史の時代ですよね。
オッサンになるって怖いです。学生のころはあれだけ運動していたのに、仕事や家庭にかまけていたら、そういえば半年くらい運動していない・・・ということがすぐに起こります。そして、その生活を変えようとすると凄い努力が必要になってしまう。。
本編
家の中からスマート体組成計(301SI)が発掘されました。一年に一度しか体重計に乗らない(健康診断)生活を改める良い契機なんじゃないかと思い、とりあえずハックしました。
処理の流れ
- https://healthcare.mb.softbank.jp/v3/web_login にSIMの電話番号とユーザーIDとパスワードをpostして、cookieにセッションIDをいただき、
- 1でもらったセッションIDをcookieにセットして https://healthcare.mb.softbank.jp/v3/web_api_get_home_summary に日付をつけてgetすると色々な身体のデータが取れる。
実装(Python)
requestを使ってpostとgetする。requestがセッションを張ってcookie等をよしなにしてくれるので、とても楽。一部を抜粋するとこんなかんじ。
session = requests.session()
login_url = 'https://healthcare.mb.softbank.jp/v3/web_login'
inputs = {"telno": "08012345678", "user_id": "1", "passwd": "0401",}
r = session.post(login_url, data=inputs)
if r.status_code == requests.codes.ok:
print(r.text)
実際のコードはこちら。
実装(Javascript)
Google Spreadsheetにスクリプトを仕込んで自動更新させるのに、一番相性が良いのはやっぱりjsでしょう。
UrlFetchApp.fetchを使うんだけど、Pythonのrequestみたいによしなにやってくれないので、けっこう気を遣うことになる。セッションをつなげるために、cookieを手動でセットする。getAllHeaders()['Set-Cookie']で取得した値には、Expired dateが入っているせいで、そのまま次のセッションのCookieに転用することができないので、丁寧に削ってあげる必要があった。あと、UrlFetchApp.fetchのオプションにヘッダを載せるときのハッシュラベルが"header"じゃなくて"headers"なことになかなか気づけなくて、しばらく時間を無駄にした。
なにはともあれ、できたスクリプトを↓みたいに一行目に項目名を記述したspreadsheetに張り付けて、深夜に回すように時間指定トリガーをかけたら完成。
健康になれますように。
Author And Source
この問題について(体重や体脂肪率が毎日Google Spreadsheetに更新されるようになった), 我々は、より多くの情報をここで見つけました https://qiita.com/yoneken/items/594687722d40b603b256著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .