【GAS活用】現役エンジニアが気になるサッカーの試合をDB化しGoogleカレンダーと連携させたりして遊んでいる話
今日はいつもと趣向を変えてエンジニアっぽい話を1つ。
最近は海外で活躍する日本人サッカー選手も増えてきて、試合の日程を覚えるのも大変です。
以前はGoogleカレンダーに見たい試合をすべて直接入力していたのですが、だんだん面倒くさくなってきたのでGoogleシートとGASを活用してデータベース化&自動連携させてみることにしました。
まだ全然完成形というわけではなく、手入力している部分も多い”半自動”レベルのものですが、プログラミングができればこんな事もできるんだなーという参考になりましたら幸いです。
始めたきっかけ
きっかけは、ただただ自分が観たい試合の日程を把握しておきたかっただけなんです。
海外サッカーの試合って深夜や早朝にやっていることも多く、けっこう見逃しちゃうこともあったんですよね。
すやすや眠った後に起きてニュースアプリを開いたら「●●選手、ゴール!」って出てきて「しまったー見逃したー!」とか。笑
それで何とかしようと思い、最初はGoogleカレンダーに1つ1つ手入力していたんですが、数も増え面倒くさくなったり入力ミスも増えてきたので、のちのちの事も考えてデータベース化しておきたいなと思い立ちました
ちょうどお仕事でGoogle App Script(GAS)を使う機会が増えそうだったので、その練習も兼ねて。(普段はPHPやらPythonやらがメインです)
毎週やっている具体的な手順
実際にどこをどんな風に自動化させているのか。以下は毎週月曜日に大体やっている作業です。
(1) Googleシートへ気になるチームの最新試合日程を入力(手動)
まず各試合の日程は、専用のGoogleシート内に1行ずつ入力していきます。
ここはまだ手動でやっています。例えばチーム名でGoogle検索し出てきた試合日程を直近数試合分、手入力。
サッカーの試合日程は変更になることも結構多いんですよね。トーナメント式のカップ戦で上位進出しているチームが過密日程にならないよう、リーグ戦の方を延期させたりとか。
あんまり先の日程まで入れすぎると修正が面倒なので、直近2~3週間分くらいだけ入力するようにしています。これを7チーム分くらい繰り返し。
Googleシートの方はこんな感じです。今後色々な用途に使いたいので、現状必要のない情報も列として用意しています。
試合開始日時については2パターン用意しています。3/10の1時と表記するのか、3/9の25時(翌1時)と表記するのか、の違い。
日付だけ見て「この試合は明日かーじゃあ今日は寝るか」と思っていたら実は今日の深夜キックオフだった、みたいなパターンもよくあるのでそれを防ぐためです。笑
これらについては、24時間表記の日時だけ入力すれば別パターンの日付表記は自動で計算してくれるよう、数式で対応しています。
(2) 直近試合をGoogleカレンダーへ自動登録
一番やりたかったのが、これ。Googleカレンダーへの自動登録ですね。
データベース化した試合日程一覧をキックオフ日時順にソートし、今週の試合だけをGoogleカレンダーに自動登録させたかった。
毎回任意の試合のみを連携させたかったので、以下画像のように登録したい試合の行に「Go」と書いたものだけを連携させるようにしました。自作GASの「Gカレ自動登録」をクリックすると・・
「Go」と書いた行の試合日程がカレンダー側にすべて登録されます。一度に登録されるこの気持ち良さ。
連携完了すればGoogleシートの「Go」は青背景の「o」になって連携完了しているのが分かるようになっています。データベース化したことで、漏れや重複のチェックもしやすくなりましたね。
(3) 直近試合まとめ記事用のnote見出しテキストを自動生成
試合日程をデータベース化したことで「毎週書いているnote記事も何とかラクしたいなー」という邪な気持ちが芽生えてきました。
note記事というのはこれのことです。毎週日本人選手が出場しそうな海外サッカーの試合日程をnote記事にまとめています。
この記事に関しては、各試合の注目ポイントなんかも自分の言葉で書きたかったので全自動というわけにはいきませんが・・
文章内の各見出し(試合日程、対戦チーム、出場予定選手の部分)はデータベースから情報を拾えるなと思ったので、見出しテキストだけを自動生成するようなGASも自作してみました。
こちらもGoogleシートで「Go」と書いた試合が・・
こんな風に見出し文として自動生成されます。
あとはこれをnote記事にコピペして、合間に文章を書いていくだけ。
試合数が多くなってくると何気に面倒くさい作業となっていたので、かなりラクになりました。
今後やってみたいこと
データベース化したことで、今後は色んなことができそうです。
・スケジュール取得も完全自動化(Webスクレイピング or WebAPI)
・Twitterと連携させてbot運用
・Slackと連携させてチャンネルに自動投稿
・サムネイル画像を自動生成
・タスク管理システム等にもスケジュール連携
また試合スケジュール以外でも、サッカー関連のデータを使って色々試せればと思っています。調べてみるとAPIも意外とありそうなので。
仕事の合間に色々遊んでみたいと思います。ではではー。
この記事が気に入ったらサポートをしてみませんか?