かずきち。の日記

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

ブログについたはてなスターの記録を自動でGoogleカレンダーに書き込むGoogleAppsScriptを書いた。

今回やること

はてなブログを運営しているとはてなスターがつくことがあります。

その記録をGoogeカレンダーに自動で記録します。

完全自動です。人間は何もしません。
さっそく解説します。

f:id:kazukichi_0914:20201010095058p:plain

はてなスターとは
help.hatenablog.com

このブログの下部にもついていますが、「この記事いいね」を筆者に伝えるツールになります。
はてなユーザーなら使ったことがあると思います。
でも10年前のブログ記事ではてなスターをもらっても気が付きません。

はてなスターの履歴をカレンダーに完全自動で書き込みましょう
function HatenaCalender() { 
  //最新の☆レポートを取得します
  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){
    //☆でスライス
    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) 
   );
  
  //ここからスプレッドシートに書き込んでいきます
  var spreadsheet = SpreadsheetApp.openById('自分のスプレッドシートID');
  var sheet = spreadsheet.getSheetByName('はてなスター推移');
  sheet.insertRows(2,1);  
  sheet.getRange("A2").setValue(date);
  sheet.getRange("B2").setValue(hatenastar);
  sheet.getRange("C2").setValue("=IF(B2<>\"\",SPLIT(B2,\"(\",\"\"))");
  sheet.getRange("E2").setValue("=SPLIT(D2,\")\")");
}

を毎日実行させると、

f:id:kazukichi_0914:20201010100040p:plain

毎日のはてなスターの記録を自動でつけるようにしました。
やってみたい方はこちらから。

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

番外編・コロナウイルス感染者数版も開発しました

毎日東京の感染者を記録していきます。
興味ある人は「+」ボタンから登録してみてください。