Geoguessr Daily Challengeの結果をGoogle Spreadsheetに記録するためのスクリプトを、Google Apps Scriptで作った。

とりあえず動くようになりました、という状態なのでまだ公開はしないけれど、何をやっているかというと

  1. 今日のchallengeのトークンをAPI経由で取得する
  2. https://www.geoguessr.com/results/<取得したトークン> のページソースの中にそのchallengeの内容や自分の結果に関するJSON文字列が含まれているのでそれを取得する
  3. 取得したJSONから必要な部分を抜き出してスプレッドシートに書き込む

という程度のもの。

これまでマストドンにDaily Challengeの結果を毎日投稿し続けていたのだが、それは上記resultsページでスコア表示部分のスクリーンショットを撮って貼り付けていた。手作業で切り抜いていたので微妙に手間がかかるし毎回サイズが微妙に違うので何か気持ちが悪い。それをスクリプトで生成した投稿用の文字列で済ませることにした。これからはそのような気持ち悪さをあまり感じなくて済むと思う。

当初はresultsページのソースを見ればいいことに気づかず、APIだけを使ってどうにかデータを取ってこれないかと考えてそちらばかり探していたのでちょっと時間がかかってしまった。

Google Maps APIを使えばresultsページと同じような地図表示(正解の地点と自分のguessした地点にピンが立っている)が作れるのかもしれない(daily-challengeページから過去1週間分だけの結果が見られるが、tokenさえわかっていればそのresultsはいつまででもアクセスできるようなので、今のところはあまり必要性がない)。

参考