見出し画像

自分の寿命を可視化する方法

何かの本で、偉大な起業家が自分の寿命を可視化していたという記載があったので、自分でもやってみることにしました。

やり方

Googleカレンダーにタイトルが自分の寿命の予定を入れて、通知が30分ごとに来るようにする。

1. スクリプトエディタを開く

  • Googleドライブを開き、新規 -> その他 -> Google Apps Scriptを選択します。

2. コードを貼り付ける

  • スクリプトエディタに開いた空のファイルに、(下記参照)コードを全てコピー&ペーストします。

3. 誕生日と寿命を設定

  • コード内の birthDate をあなたの誕生日に設定します。例: new Date(1985, 3, 12) (1985年4月12日)

  • lifeExpectancy をあなたの期待寿命に設定します。

4. 実行権限を承認

  • 保存して、スクリプトエディタのメニューから「実行」->「addMonthlyCountdownEvents」を選択します。

  • 初回実行時には、スクリプトがあなたのGoogleカレンダーにアクセスするための権限を求められますので、承認してください。

コード(1週間作成分)

function addWeeklyCountdownEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var birthDate = new Date(1990, 0, 1);  // 自分の誕生日を入力
  var lifeExpectancy = 85;
  var deathDate = new Date(birthDate.getFullYear() + lifeExpectancy, birthDate.getMonth(), birthDate.getDate());

  var currentTime = new Date();
  var nextWeek = new Date(currentTime);
  nextWeek.setDate(nextWeek.getDate() + 7); // 1週間後の日付を設定

  // 次のキリの良い時間まで進める
  var nextRoundedTime = new Date(currentTime);
  if (nextRoundedTime.getMinutes() < 30) {
    nextRoundedTime.setMinutes(30);
  } else {
    nextRoundedTime.setHours(nextRoundedTime.getHours() + 1);
    nextRoundedTime.setMinutes(0);
  }
  currentTime = nextRoundedTime;

  while (currentTime < nextWeek && currentTime < deathDate) {
    var timeDiff = deathDate - currentTime;
    var hours = Math.floor(timeDiff / (1000 * 60 * 60));
    var minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60));
    var days = Math.floor(hours / 24);
    hours = hours % 24;
    var eventTitle = 'あと' + days + '日' + hours + '時間' + minutes + '分だよ';

    calendar.createEvent(eventTitle, currentTime, currentTime);

    // 次のキリの良い時間まで進める
    currentTime.setMinutes(currentTime.getMinutes() + 30);
    if (currentTime.getMinutes() === 60) { 
      currentTime.setHours(currentTime.getHours() + 1);
      currentTime.setMinutes(0);
    }
  }
}

最後に

寿命をカウントダウンするようにしたのですが、自分の目標が30歳までに○○とかの場合はその歳を設定するというのもアリだと思います。


おまけコード(1か月作成分)

function addMonthlyCountdownEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var birthDate = new Date(1990, 0, 1);  //自分の誕生日に変える
  var lifeExpectancy = 85;
  var deathDate = new Date(birthDate.getFullYear() + lifeExpectancy, birthDate.getMonth(), birthDate.getDate());

  var currentTime = new Date();
  var nextMonth = new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate());

  // 次のキリの良い時間まで進める
  var nextRoundedTime = new Date(currentTime);
  if (nextRoundedTime.getMinutes() < 30) {
    nextRoundedTime.setMinutes(30);
  } else {
    nextRoundedTime.setHours(nextRoundedTime.getHours() + 1);
    nextRoundedTime.setMinutes(0);
  }
  currentTime = nextRoundedTime;

  while (currentTime < nextMonth && currentTime < deathDate) {
    var timeDiff = deathDate - currentTime;
    var hours = Math.floor(timeDiff / (1000 * 60 * 60));
    var minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60));
    var days = Math.floor(hours / 24);
    hours = hours % 24;
    var eventTitle = 'あと' + days + '日' + hours + '時間' + minutes + '分'だよ;

    calendar.createEvent(eventTitle, currentTime, currentTime); // 瞬間的なイベントとして作成

    // 次のキリの良い時間まで進める
    currentTime.setMinutes(currentTime.getMinutes() + 30);
    if (currentTime.getMinutes() === 60) { 
      currentTime.setHours(currentTime.getHours() + 1);
      currentTime.setMinutes(0);
    }
  }
}




この記事が気に入ったらサポートをしてみませんか?