LoginSignup
10
9

More than 5 years have passed since last update.

Googleカレンダーに月齢を表示する

Last updated at Posted at 2017-04-13

満月だとそわそわすること、ありませんか

満月だとなんだかそわそわする。
新月だとふさぎ込む。
そんな経験ありませんか?
予め月齢を知りたくありませんか??

Googleカレンダーに月齢を表示してみよう

Googleカレンダーの設定から
カレンダー設定→カレンダー→おすすめのカレンダー→その他を選択すると……
スクリーンショット 2017-04-13 13.26.09のコピー.png
便利なものがあるじゃないの!!

だが待てしかし。

スマホアプリ版では表示されないのです。

シン・Googleカレンダーに月齢を表示

GoogleAppsScriptで実装。
毎月10日に来月のカレンダーに月齢(月の名前)を終日イベントとして作成します。

手順

カレンダーの取得

var calendar = CalendarApp.getCalendarById('yourcalendarid@group.calendar.google.com');
yourcalendaridには、終日イベントを作成したいカレンダーのカレンダー設定→
スクリーンショット 2017-04-13 13.48.53のコピー.png

カレンダーIDを入れる。

スクリーンショット 2017-04-13 13.50.24.png

終日イベントの作成

calendar.createAllDayEvent('イベント名', new Date(year+'/'+month+'/'+day));

イベントを作りたい日が決まっているなら、Date('2017/4/13')のように指定したい日付を直接記述すれば良い。

ソースコード

MoonAge.gas
function createEvent() {

    //カレンダーID
  var calendar = CalendarApp.getCalendarById('yourcalendarid@group.calendar.google.com');

  //今日の日付を取得し年と月にわける
  var today = new Date();
  var year = today.getFullYear();
  var mon = today.getMonth()+1;

  //来月の月齢を計算したいので、来月にする
  mon += 1;
  //12月だったら来年1月に
  if(mon > 12){
    mon = 1;
    year += 1;

  }
  //来月の末日を調べる
  var monx = new Date(year, mon, 0);
  var matubi = monx.getDate();

  var i = 0;

  //1日から末日まで回す
  for(i=1 ; i<matubi+1 ; i++){

    //月齢定数(グレゴリオ暦からの計算らしい。なんかたまに1日ズレる)
    var moonAge_g = new Array(0,2,0,2,2,4,5,6,7,8,9,10);
    var moonAge = (((year-11)%19)*11 + moonAge_g[mon-1]+i)%30;

        //計算した月齢で分岐
    switch(moonAge){

             //月齢0だったら、朔(新月)の終日予定を作成
      case 0:
      calendar.createAllDayEvent('🌑朔', new Date(year+'/'+mon+'/'+i));
      break;

      case 3:
      calendar.createAllDayEvent('🌒三日月', new Date(year+'/'+mon+'/'+i));
      break;

      case 7:
      calendar.createAllDayEvent('🌓上弦の月', new Date(year+'/'+mon+'/'+i));
      break;

      case 12:
      calendar.createAllDayEvent('🌔十三夜月', new Date(year+'/'+mon+'/'+i));
      break;

      case 15:
      calendar.createAllDayEvent('🌕望月', new Date(year+'/'+mon+'/'+i));
      break;

      case 19:
      calendar.createAllDayEvent('🌖寝待月', new Date(year+'/'+mon+'/'+i));
      break;

      case 23:
      calendar.createAllDayEvent('🌗下弦の月', new Date(year+'/'+mon+'/'+i));
      break;

      case 26:
      calendar.createAllDayEvent('🌘二十六夜月', new Date(year+'/'+mon+'/'+i));
      break;

    }
  }
}

GAS側の設定

実行ボタンのとなりに時計ボタンがあるので、それを押すとスクショのような画面が表示される。
今回は毎月10日に来月の月齢を終日イベントとして作成したいので、月タイマーで10日に設定。

スクリーンショット 2017-04-13 13.56.36.png

スマホでも月齢が表示されるようになったよ!

C9Q8d_gUMAEfsrx.jpg

やったね!

おわりに

よくズレます。
グレゴリオ暦だから仕方ない。

まあ、しかし、
こんなものなくても空を眺めればよいのですよ。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9