boxofficemojo.com で映画のリンクにアクセスし、特定の映画の総収益を抽出するスクリプトを作成しようとしています。スプレッドシートにプラグインしたいので、これらのスクリプトを Google Apps スクリプトとして記述しています。
私の最初の実装は、映画のページで非常に目立つようにリストされている国内の合計を探しているときにうまく機能しました。(http://boxofficemojo.com/movies/?id=clashofthetitans2.htm は、たとえば、「[日付] 時点の国内合計」のすぐ下にある「$80,882,168」を抽出します。このスクリプトを拡張して、総生涯グロスの下に記載されている全世界の総総グロスを取得するために、しかし、私はそうすることができず、理由がわかりません.
問題のコードは次のとおりです。
function gross(aUrl)
{
var page = UrlFetchApp.fetch(aUrl).getContentText();
var matched = page.match(/Worldwide:<\/b><\/td>.*(\$.*)<td width="25%">/m);
var amt = "$0";
if (matched == null)
{
matched = page.match(/<b>(\$.*)<\/b>.*Distributor:/m);
if (matched != null)
{
amt = matched[1];
}
} else
{
amt = matched[1];
}
return amt;
}
function testGross()
{
var result = gross("http://boxofficemojo.com/movies/?id=clashofthetitans2.htm");
Logger.log(result);
}
2 番目の正規表現は問題なく機能しますが、最初の正規表現は機能しません。testGross() を実行すると、ログに次のデータが出力されます。
null
$80,882,168
映画のページにいるときにページのソースを表示するだけで得られるデータを使用して、www.rubular.com の正規表現をテストしました。page.match 行を、ページ変数の完全なコンテンツを含む電子メールを送信する行に置き換えると、ページのソースを表示することを選択した場合に得られるもの。
どんな助けでも大歓迎です。