昨年の10月にはてなブログのスター数をカウントするスクリプトを書いてみました!
kazukichi0914.hatenablog.com
引用:
https://kazukichi0914.hatenablog.com/entry/2020/10/10/100251
その当時は毎日なんスターが付いているかトレースできたので満足でした。
毎日はてなスターの獲得を確認したいなと思っていました。
せっかくなら記事別にスターの獲得数を知りたいです。
完成体は、
こんな具合にはてなスターの推移が見られます。
でも一つの疑問が浮かびました。
このはてなスターはどこの記事に付与されているんだろう?
なので、もうちょっとプログラムを改修してはてなスターのついている記事を特定します。
材料ははてなから定期的に送られてくるメール
こんなメールが毎日日次ではてなから送られてきます。
このメールを解析してカレンダーに書きましょう!という算段です。
このメール本文を見れば、
先日公開されたYOASOBI「夜に駆ける」のEnglishバージョンがかっこいい!に
少納言 (id:syounagon) ☆
めるママっくす (id:merumamax) ☆☆☆
ひーろ (id:hirochanna) ☆☆☆
ダイス (id:daiskun) ☆☆☆
もう少しでシングル (id:lowhandicapper) ☆☆☆
金井戸 隆 (id:kaneido) ☆☆☆☆☆
りょうさん (id:ryousankunchan) ☆☆☆
AIBOパパ (id:daiki-em) ☆☆☆
お母ちゃん (id:suoaei) ☆☆☆☆☆☆レモネード専門店「レモニカ」が爆誕!夏も冬もいろんな味のレモネードを楽しめる!
https://kazukichi0914.hatenablog.com/entry/2021/07/03/200000
rieco (id:sora-umi-inu-watashi) ☆☆☆☆☆☆
もう少しでシングル (id:lowhandicapper) ☆☆
金井戸 隆 (id:kaneido) ☆☆☆☆☆
お母ちゃん (id:suoaei) ☆☆☆
AIBOパパ (id:daiki-em) ☆☆☆
sato (id:pirorikin-58) ☆☆☆
という詳細がわかります。
このデータを使います。
function HatenaBlog() { //最新の☆レポートを取得します const query = 'You have new messages.'; const start = 0; const max = 1; const threads = GmailApp.search(query, start, max); const messagesForThreads = GmailApp.getMessagesForThreads(threads); for(const messages of messagesForThreads){ //)を微調整 hatenastar = messages[0].getPlainBody().split("☆")[3] + ")"; //console.log(hatenastar); var count = messages[0].getPlainBody().split("■").length; console.log("スターが付いた記事数は"+(count-2)+"記事"); for(var i=1;i<=count-2;i++){ //ブログ一記事あたりのスター //console.log("記事URL"); //console.log(messages[0].getPlainBody().split("■")[i].split("¥n")[0].split("¥n")[0]); //☆で切る console.log("記事タイトル"); console.log(messages[0].getPlainBody().split("■")[i].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("~ ☆(はてなスター)とは? ~")[0]); } } }
これが改修後のスクリプトです。
短いですが、完動します。
もはや、力技でメール本文をパースしていますが、split関数を使いまくります。
コード本体
function HatenaBlog() { //最新の☆レポートを取得します const query = 'You have new messages.'; const start = 0; const max = 1; const threads = GmailApp.search(query, start, max); const messagesForThreads = GmailApp.getMessagesForThreads(threads); for(const messages of messagesForThreads){ //)を微調整 hatenastar = messages[0].getPlainBody().split("☆")[3] + ")"; //console.log(hatenastar); var count = messages[0].getPlainBody().split("■").length; console.log("スターが付いた記事数は"+(count-2)+"記事"); for(var i=1;i<=count-2;i++){ //ブログ一記事あたりのスター //console.log("記事URL"); //console.log(messages[0].getPlainBody().split("■")[i].split("¥n")[0].split("¥n")[0]); //☆で切る console.log("記事タイトル"); console.log(messages[0].getPlainBody().split("■")[i].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("¥n")[0].split("~ ☆(はてなスター)とは? ~")[0]); } } }
こちらの27行のコードで、
ブログの詳細データをGoogleカレンダーにこんなアウトプットを死ぬまでしてくれます。
こんなことが27行のコードでできてしまうんですねーGoogleさんさすがです。
split関数を使いまくって文字列を整形しています。
実行結果はこちら
誰がなんの記事にブックマークや☆をくれたのか記録をしていきます。
ブログ運営をする上でなんの記事がPVを増やしてくれているのか解析することは大事です。
なので、さくっとはてなスターの習得の詳細をカレンダーに書き込むスクリプトを書いてみました。
ついたはてなスター・はてブの数を毎日自動記録します はてなブログの頑張りを記録して、モチベーションに
プログラミングなんてできないよーという方も上記サービスで設置までサポートいたします。
一度本サービスを購入いただければGoogleが稼働している限り動作いたしますので、リーズナブルかと思います。
買い切りです。