【スプレッドシート】F1公式サイトからドライバーズランキングを取得してみる その1【GAS、関数】

いよいよF1シーズンも近づいてきました…と書くと気が早い感じがしますが、近年のF1はシーズンも長くて、終わったらすぐにテスト、年が明ければすぐに新車発表に向けた動きなどがニュースとして流れ出してきます。

このサイトでも、HSPを使ってスクレイピングで公式ページからレース結果とドライバーズランキングを生成(htmlにて)することをしていたりします。

【HSP】2018年版 F1ランキングページを生成してみる【その24・最終戦アブダビGP】
最終戦ということで、youtubeにはこんな動画が上がっていたり(*'ω'*) アロンソへのビデオレターですな~しかも...

上記の記事で次回は2019年用のプログラムで…なんて書いていたんですが、ここのところのスプレッドシートいじりで

「これF1サイトでもいけるんじゃね?」

なんて思ってしまった次第。

HSPの準備もしないとなーなんて思っていたんですが、その前に物は試しということで、importxmlと簡単なgasを使って、去年2018シーズンのドライバーズランキングを取得してみようと思います。

スポンサーリンク

対象となるページを確認

自分にとってはおなじみのページ。

URLもちょっぴり違和感がある感じですが、わりと単純でして

https://www.formula1.com/en/results.html/2018/drivers.html

仮に2017年の結果を知りたいなら2018を2017にするだけで行けちゃうわけで(*’ω’*)

どんな感じにするかを考える

折角なら各シートごとで年代別にするみたいな感じが良さげですよね?

となるとシート名を「2018」とかにして、その名前を取得してURLに組み込むなんてのがGASの勉強にもなるかもしれません。

…というのも、スプレッドシートにはExcelとちがって、シート名を取得する関数がないっぽいんです(´Д`)

なので、無いなら作ればいいじゃない! ってことでGASで補うことにします。

さて、URLに組み込むには、文字の結合みたいなことをしなければならないですよね?

これはちゃんと関数がありますw

そして出来上がったURLを利用してIMPORTXMLで情報を取り出す流れ。

まとめると

  • GASにてシート名を取得する関数を作る
  • URLを生成するために文字の結合をする関数をつかう
  • IMPORTXMLで情報を取り出すために、本家サイトを調べる
  • IMPORTXMLを記述する

という感じでしょうか?

まず土台を用意し、シート名取得関数を用意する

 

ファイル名は何でもいいと思います(*’ω’*)

A1のセルに土台になるURLを入れました。

これに年数と/drivers.htmlを結合すればURLは完成するはず。

また、セルには半角数字で西暦を記入してます。

土台はこれでOKかな。

次はシート名の取得(*’ω’*)

メニューの「ツール」から「スクリプトエディタ」を開きます。

関数名をSheetName()としました。

で、考え方としてはアクティブなシートの情報を取得して、その名前を取り出す。

コードにすると

SpreadsheetApp.getActiveSheet().getName();

こんな感じでしょうか?

これを値として返してあげればいいのでreturn を頭につけてあげます。

return SpreadsheetApp.getActiveSheet().getName();

これをスクリプトエディタで書いてあげましょう。

保存して(名前は何でもOKですよ)、実際にシート名を取得してみましょう~

保存したらスプレッドシートに戻って

適当なセルに「=SheetName()」と書いてエンターキー!

 → 

バッチリ取得できてますね(*’ω’*)

まとめ

ちょっと長くなったので、2回にわけてみます。

次回は取得したシート名を利用してURLを生成、そして実際のページにてXMLの記述を考えて実際にIMPORTXMLにて取得してみます。

そんなに難しくないので、興味がある方は実際にトライしてみてください!

「こんな簡単に動くんだ」

ってのが実感できるとおもいます(*’ω’*)

何かの参考になれば幸いです!

今回のコード

function SheetName() {
return SpreadsheetApp.getActiveSheet().getName();
}