かずきち。の日記

サーバサイドエンジニアのつぶやき

GASでブログに付いたはてなスターをGoogleAppsScriptでカレンダーに自動記録しよう

ブログ等についたはてなスターを自動記録していこう

f:id:kazukichi_0914:20200824145520p:plain

はてなやってると他のユーザーがいい記事やブクマにスターをつけてくれます。

f:id:kazukichi_0914:20200824145804p:plain

こんな風にどの記事にどれくらいスターが付いたかっていうのを記録してくれます。
過去にレッドスター2、グリーンスター16、通常スター2795件もらったそうです。
自分で自分の過去記事を見返さないと、どれくらいの人に読まれたのかわかりません。

developer.hatena.ne.jp
引用:
http://developer.hatena.ne.jp/ja/documents/star/apis/entry

はてなスターAPIなるものがあり、このページにどれくらいのスターが付いているかの取得ができます。
ただこのAPIはGETメソッドでスター数をあくまで自発的にpullで取りに行かないといけないのです。
push/pullの概念はインターネットの世界でよく出てきますので、わからない人は下の参考記事を読んで見てください。

japan.cnet.com
引用:
https://japan.cnet.com/article/35050326/

とにかくやりたいことは、その日に獲得したはてなスターGoogleカレンダーに記録することです。

はてなは毎日こんなメールを送ってきてくれます

f:id:kazukichi_0914:20200824145520p:plain

メールでもらってもいいんですが、いちいちメールを後から 見返さないといけないのでめんどくさいです。
だったらいっそのこと、はてなスターを獲得したら、獲得した日にGoogleカレンダーに自動で書き込んじゃいましょう。
ということでスクリプトを書いてみました。

function HatenaCalender() {
//最新の☆レポートを取得します
const query = 'かずきち。さんの☆レポート';
const start = 0;
const max = 1;

const threads = GmailApp.search(query, start, max);
const messagesForThreads = GmailApp.getMessagesForThreads(threads);

for(const messages of messagesForThreads){
//☆でスライス
console.log(messages[0].getPlainBody().split("☆")[3]);
//)を微調整
hatenastar = messages[0].getPlainBody().split("☆")[3] + ")";
console.log(hatenastar);
}

//ここからカレンダーに書き込んでいきます
var date = new Date();
//今日の日付を表示
Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyyMMdd'));
Logger.log(date);

var calender = CalendarApp.getCalendarById("自身のカレンダーID@group.calendar.google.com");

calender.createAllDayEvent(
hatenastar
, new Date(date)
);

}

とにかくやりたいことはカレンダーに獲得したはてなスターを記録すること。
それにつきます。
上記スクリプトを毎日夜の23:59に自動起動すれば、その日に取得したはてなスターの獲得通知からGoogleカレンダーに自動で書き込みます。

昨日の夜、このカレンダーを作ったのでまだはてなスター数の欄が少ないですが、ここに毎日獲得したはてなスターが記録されていきます。
まだ自身も完全動作を見守れていないので、修正加筆はあると思いますが、はてなスターを記録するスクリプトです。

このブログ見てもやり方がわからないという方は下記サービスをご利用ください。

はてなブログについたスターの数を記録します はてなブログの頑張りを記録して、モチベーションに

スクリプトの設置・運用までサポートいたします。