Google Apps Scriptで、ページ毎のはてなブックマーク数を週次で取得する
更新日:2023.05.05
作成日:2020.07.20
7/20現在、
Blog KPI Collector(GAS)で各種KPIを自動取得する
で設定したGoogle Apps Script
でサイト全体のブックマーク数を取得しています。
「はてなブックマーク数」の推移を追っていく際に、全体としてどのぐらい増えたのかは分かるのですが、どのページで増えたのかが分かりません。 そこで、ページ毎のはてなブックマーク数も合わせて取得するようにしました。
ページ毎のはてなブックマーク数を取得する
ページ毎のはてなブックマーク数は、以下のAPIを利用することで簡単に取得できます。
はてなブックマーク件数取得API - Hatena Developer Center
このAPIをGoogle Apps Script
から叩くことにしました。
function getBookmarks(url) {
let encodeUrl = encodeURIComponent(url);
let response = UrlFetchApp.fetch('https://bookmark.hatenaapis.com/count/entry?url=' + encodeUrl);
return response.getContentText();
}
サイトマップからURLを抽出して逐次はてなブックマーク数を取得する
以下のGoogle Apps Script
を毎週実行して、結果を貯めてみることにします。
sitemap.xmlには、通常の記事ページ以外にもタグページやカテゴリページのURLも含まれています。
そのため下記の通りURLがhttps://www.meganii.com/blog
で始まるもの、かつ、被はてなブックマークが0よりも大きいものを出力するようにしています。
function main() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('bookmarks');
const today = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");
const feedURL = "https://www.meganii.com/ja/sitemap.xml";
const response = UrlFetchApp.fetch(feedURL);
const document = XmlService.parse(response.getContentText());
const root = document.getRootElement();
const sitemap = XmlService.getNamespace("http://www.sitemaps.org/schemas/sitemap/0.9");
const entries = root.getChildren("url", sitemap);
for (let i = 0; i < entries.length; i++) {
const url = entries[i].getChild('loc', sitemap).getText();
const isPostPage = /^https:\/\/www\.meganii\.com\/blog/.test(url);
if (isPostPage){
const count = getBookmarks(url);
if (count > 0) {
sheet.appendRow([
today,
url,
count
]);
}
}
}
}
Related contents
TECH
2020.04.10
Blog KPI Collector(GAS)で各種KPIを自動取得する