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

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

#Googleカレンダーに月齢を表示してみよう
Googleカレンダーの設定から
カレンダー設定→カレンダー→おすすめのカレンダー→その他を選択すると……
<img width="254" alt="スクリーンショット 2017-04-13 13.26.09のコピー.png" src="https://qiita-image-store.s3.amazonaws.com/0/43453/58950bab-566e-a50f-89a3-ee30722ec1d2.png">
便利なものがあるじゃないの！！

**だが待てしかし。**

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

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

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

##手順
###カレンダーの取得
```var calendar = CalendarApp.getCalendarById('yourcalendarid@group.calendar.google.com');```
yourcalendaridには、終日イベントを作成したいカレンダーのカレンダー設定→
<img width="413" alt="スクリーンショット 2017-04-13 13.48.53のコピー.png" src="https://qiita-image-store.s3.amazonaws.com/0/43453/fa13ae9e-ec51-0808-a02f-66428a5849f5.png">

カレンダーIDを入れる。

<img width="912" alt="スクリーンショット 2017-04-13 13.50.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/43453/7a6f029d-a50c-9915-c808-1fc31863391d.png">

###終日イベントの作成
```calendar.createAllDayEvent('イベント名', new Date(year+'/'+month+'/'+day));```

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

##ソースコード
```js: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日に設定。

<img width="883" alt="スクリーンショット 2017-04-13 13.56.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/43453/19d59963-f041-8545-1380-eea237217d39.png">

#スマホでも月齢が表示されるようになったよ！
![C9Q8d_gUMAEfsrx.jpg](https://qiita-image-store.s3.amazonaws.com/0/43453/c50fe94a-5f03-aa7c-f444-e58fdd29a267.jpeg)

やったね！

#おわりに
よくズレます。
グレゴリオ暦だから仕方ない。

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