• 締切済み

GoogleFeed API でNew画像を表示

Google Feed API を使って、ブログの記事タイトルを並べて表示させ、さらに新しい記事にはNew画像を表示させたいのですがうまくいきません。 どなたか、ご教授おねがいします。 現在、外部JSファイルに、 google.load("feeds", "1"); var pastDay = 15;//何日数前までnewマークをつけるか指定 var now = (new Date()).getTime();//現在の時間 var pastTime = pastDay * 24 * 60 * 60 * 1000;//newマークをつける期間の時間 function initialize() { var feed = new google.feeds.Feed("http://ワードプレスのブログ/?feed=rss2&cat=3"); feed.setNumEntries(5); feed.load(function(result) { if (!result.error) { var container = document.getElementById("newssfeedtable"); var html = ""; for (var i = 0; i < result.feed.entries.length; i++) { var entry = result.feed.entries[i]; var dd = new Date(entry.publishedDate); // now var yearNum = dd.getYear(); if (yearNum < 2000) yearNum += 1900; var m = dd.getMonth() + 1; if (m < 10) {m = "0" + m;} var d = dd.getDate(); if (d < 10) {d = "0" + d;} var date = yearNum + "年" + m + "月" + d + "日"; html += "<tr><th>" + date +" </th>" +"<td><a href='" + entry.link + "' target='_blank'>" + entry.title + "</a></td>"; if(now >= entry.sortDate && now <= (entry.sortDate + pastTime)){ //newマークの追加 html += "<td class='icon'><img src='../img/icon-text-new.png' alt='新着'></td>"; } container.innerHTML = html; } } }); } google.setOnLoadCallback(initialize); と書いています。 しかし、どうやら if(now >= entry.sortDate && now <= (entry.sortDate + pastTime)){ //newマークの追加 html += "<td class='icon'><img src='../img/icon-text-new.png' alt='新着'></td>"; } この部分が上手くいっていないようで、 html += の行を、外に出すと、きちんと表示されます。 また、厚かましいですが、これに加えて、1時間毎にキャッシュ更新というのも組み込みたいのですが、もし解るようであれば、これの組み込み方も知りたいです。 http://d.hatena.ne.jp/m_ogawa/20100301/1267423085 の一番下に書いてあるものです。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

Google Feedはまったく知りませんが、 >この部分が上手くいっていないようで、 どううまくいっていないのか書いてありませんが、エラーが出るわけではないのでは? 単に、何も変わらないだけではないかと想像します。 APIのリファレンスをざっと見てみましたが、sortDateってメソッドもプロパティも見当たりませんけれど、何が返る予定なのでしょうか? https://developers.google.com/feed/v1/devguide?hl=ja 想像では、存在しないプロパティなのでundefinedになっていて、その結果、条件分岐がfalseになっているだけではないかと… >1時間毎にキャッシュ更新というのも組み込みたいのですが 1時間ごとにinitializeを呼び出すようにすればよろしいでしょう。  setInterval(initialize, 60*60*1000); キャッシュではなく更新して読込ませるためには、ご提示のサイトに書いてある通りで、initializeの中でその時の時間(分秒を省略して)をクエリに付け加えるようにしておけばよろしいのでは?

関連するQ&A

専門家に質問してみよう