sou's blog

落ち着いた華やかさがあり、上品に明るく陽気なさまを表す。

Herokuを眠らせない方法

概要

Google Apps Scriptを利用して30分おきにアクセスを発生させてHerokuを眠らせないようにしています。 複数のサイトを考慮し、またスリープ時間も加味しております。

トリガーについて

アイコンバーの時計のようなアイコンをクリックすると、「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」 と表示されると思うのでそちらをクリック。 ”時タイマー”を”分タイマー”にし”30分ごと”を選択して保存をクリックします。

設定するスクリプト

// 起こすサイトの情報
// ※日曜が0、土曜日が6。
var sites =[{
  url       : "https://hogehoge.herokuapp.com",
  wakeupHour: 10,
  sleepHour : 19,
  activeDayOfWeek: [0,1,2,3,4,5,6]
}];

// 現在の日の指定した時間、分、秒を取得します。
function createCurrent(hours, minutes, seconds) {
  hours   = hours   || 0;
  minutes = minutes || 0;
  seconds = seconds || 0;

  var current = new Date();
  current.setHours(hours);
  current.setMinutes(minutes);
  current.setSeconds(seconds);
  return current;
}

// URLアクセスしてHerokuを起こします。
function wakeUp() {
  sites.forEach(function(site) {
    var now        = new Date();
    var wakeupTime = createCurrent(site.wakeupHour);
    var sleepTime  = createCurrent(site.sleepHour);
    var active     = wakeupTime <= now && now <= sleepTime && 0 <= site.activeDayOfWeek.indexOf(now.getDay());
    if (active) {
      UrlFetchApp.fetch(site.url, { muteHttpExceptions:true });
    }
  });
}