インストーラやパッチの情報、ダウンロードURLをスプレッドシートで一覧表示したいのです
Delphi / C++Builder / RAD Studio のインストーラやパッチは基本的に https://cc.embarcadero.com/myreg に EDNアカウント(Embarcadero Developer Network)でログインしてダウンロードできます。
ダウンロードページではこんな風に一覧表示されます(ログインするEDNアカウントのライセンスやサブスクリプションの状況等により表示内容は異なります)。
しかし、cc.embarcadero.com の表示は、製品のリリース直後などは利用者のアクセスが集中したり、また、エンバカデロ製品をたくさん所有している場合にも、表示される一覧が多いために少し待たされることがあるようです。
それを回避するため、直近のインストーラやリリースの情報だけを取得して、Google Spreadsheet に入れてみようと思い立ちました。
ただし、こういうリストを手作業で管理するのは意味がないので、できるかぎり自動的にアップデートされるように管理します。。
キーポイント
cc.embarcadero.com の RSS feed で情報がとれました
https://cc.embarcadero.com/rss にアクセスしてみると、RSS feed が取得できます。中身はこういう内容ですので、まさに欲しい情報が含まれています。そして、この記事の投稿時点での最新のパッチも確認できます。
RSS feed は標準のワークシート関数だけで読み込める
Google Spreadsheet には '''IMPORTFEED''' というワークシート関数があります。
https://support.google.com/docs/answer/3093337?hl=ja
これを実行する計算式を以下のように作ってみました。これを Google Spreadsheet のA1セルに放り込んでみてください。
=IMPORTFEED("https://cc.embarcadero.com/rss", "items",TRUE,50)
そうすると、こんな情報がとれるはずです。直近50件分の情報が取れます。
このフィードのデータはimportfeed自体が内部でキャッシュするようで、12時間くらいはキャッシュから値が返されるようです。
このリストから必要な情報だけを抽出したい
一覧には、IDERA製品となったものも含まれていますが、これは除外しようと思います。そういうときに Google Spreadsheet の QUERY
を使うと、SQL を実行するかのごとく、データ抽出できます。
別のシートを作成して、こんな計算式をA1に投入します。
=QUERY('シート1'!A:D,"select A,B,C,D where A contains 'RAD Studio' or A contains 'Delphi' or A contains 'C++Builder'",true)
そうすると、Titleに Delphi / C++Builder / RAD Studio を含む行だけが抜き出されるはずです。
なお、本当は以下のように正規表現マッチで書きたいのですが、IMPORTFEED で取得したデータには matches は効かないみたいです。
=QUERY('シート1'!A:D,"select A,B,C,D where A matches 'RAD Studio|DelphiC\+\+Builder'",true)
というわけで、こんな方法でデータを抽出できました。一部、製品のインストーラやパッチでは無いものも見えていますが、ざっくり作ったのでこんな感じでゆるく動いてくれれば、自分的にはOKです。この方法ならWebページをスクレイピングする必要はないですし、情報は自動更新されますから管理も省力化できますし。