electron+react+gas+spreadsheetでgoogle calender用のスケジューラーを作る(1)
こんにちは!株式会社スマレジ、開発部のmasaです。 御堂筋のイルミが今年も始まっていますねー!masaも昨日買い物の帰りに眺めながら歩いていました。 まだ、葉っぱが散っていないのですが、それでも結構しっかり光っているのがわかるのが面白いです。
さて、今回はタイトル通り、このブログで使っていることを詰め込んで、開発をしているのでそのお話を。
やりたいこと
プロジェクトを進行していると、「この作業毎回必要だな」と思うような、いわゆるWBSに反映させたい内容が出てきます。 例えば、下記のようなこと。
- テスト期間中に、パフォーマンスツールやバグ監視ツールを見て、テスト環境でエラーが出てないかとか、負荷が安全値内か確認する
- 工数の着地やリリースのための事務作業(特にいつまでにやらないといけないのか)
こういったことをもれなく、ダブりなく、やるべき時にやりたいわけです。(たまにもれそうになってヒヤッとする) そのために次のバージョンの作業について、何をするか検討している時に、こういった毎回発生するものについてはスプレッドシートでリスト化して、そのリストベースでGoogleカレンダーに登録しちゃいたい、と言うのが今回のやりたいことです。
要素技術
参考文献という名前の過去ブログ
Electron + Reactの過去記事
GASは今回はAPIを使うので、外部会員連携の時のブログが使えそうです。
GASでgoogle calenderに予定を登録
参考リンク↓
これは簡単。
const calendar = CalendarApp.getCalendarById("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com"); calendar.createAllDayEvent("test event all day", new Date("2022-12-11")); }
ここではグループ予定にタスクを追加しています。(PJメンバー全員に見せたいので)
グループ予定のID(@group.calendar.google.com
の部分)については、下記画像の「設定と共有」を開いて、
「カレンダーの設定」の下の方に行くと「カレンダーの統合」があって、そこにあります。
上のソースは全日のタスクを入れる例ですが、時間指定も可能です。 実際にこれを実行してみると、下のような感じでタスクが登録されます。
ただし、グループ予定に追加できるのはそのグループの管理者のみなので注意が必要です。 ただ、管理者ユーザ実行扱いでウェブアプリとして公開(doGet,doPost)した場合は、その公開範囲に応じて実行可能なようなので、 リクエストに認証用の秘密鍵をつけておくか、別にトークン発行用のAPIを作って、スクリプトプロパティを使って認証するのが安全そうです。