公開用のカレンダー用の仕組みを作った

https://www.yumechi.work/ で見れる。( github.io なので https://yumechi.github.io/ でも見れるはず)

動機

最近、自分の予定が管理しきれていないのと、いつ暇と聞かれたときに回答がめんどくさいなと思い始めていてある程度公開できる形で予定を示しておきたかったから、ってだけですね。

(おいたのは自分のサイトなので誰も見に来ないとは思いますが…。)

使った技術

  • Google Apps Script

リポジトリ

微妙なコードを直置きしてる

https://github.com/yumechi/sync_google_calendar

仕組み

ただ単にカレンダーを公開すればいい問題でもないので(人には黙っていたいが、予定が入っていることを示したい場合もある)マスキングした上でバッチ処理を行い、公開用のカレンダーに書き込む。

予定を重複して書き込まないために非公開予定の最後に 【yumechi】 と書くことにより、すでに書き込んだことをマークする。

あとはトリガーをセットしてあげれば定期的に予定が同期される。

ハマりどころ

  • 無限にGASでハマる
    • 2年ぶりくらいにカレンダーAPIを触った、GASを触った。なのでJavaScriptが古くて、ないもの多すぎてキレそうだった
    • カレンダーの名称を取ることすら最初は難しかった
      • 結局全てのカレンダーを全部取って全部情報をプリントして確認した
    • 権限周りでコケまくった(READ権限しかないカレンダーにWRITEしようとしてはいけない)
    • イベント取るのがめんどくさかった
      • 時間の範囲指定がね…
    • 配列とは… うぐぐ…(JavaScriptが古いことに起因する問題の一つだと思う)
    • description のセットをミスしまくる(セットできてないことに気づいていなかった)
    • デバッグがし辛い(エラーが分かりづらい)
    • カレンダー名を隠すためにproptertyにセットして取り出す方法を忘れて辛かった

作業時間

6時間くらい?

まとめ

  • GASは進捗が出やすいので楽しい
  • Google API触っていろいろできたので、カレンダーをDBみたいにしてAPIみたいなものを書きたいなー
  • TypeScriptとかも使いたい
  • claspつかいたいな https://qiita.com/howdy39/items/0e799a9bfc1d3bccf6e5
  • あとはチェック方法がとても微妙なので、もう少しうまく更新する技を考えたい

参考にしたところ