Windows上でSchedule Watcherというスケジュール管理アプリケーションを利用しています。これで登録してあるスケジュールをGoogleカレンダーにも一括して登録したいと思います。iCalendar形式ファイルを使えば、Schedule Watcher側でエクスポートしたファイルをGoogleカレンダー側でインポートできましたので、これで解決かと思いました。
問題なのは、Googleカレンダー側で勝手にアラーム設定されてしまうことです。Googleカレンダーの設定にある「通知設定」で「通知」を「OFF」にしてあるのですが、iCalendarファイルを読み込む際にアラームが設定されてしまうようです。Schedule Watcherが出力したiCalendarファイルには「アラーム」に関する情報は入っていないので、Googleカレンダー側で親切に(?)アラームを設定しているようです。
Googleカレンダーのようなアプリケーションを操作するために「Google Apps Script」というものがあるようです。これを使えば、おそらく対処できるのでしょう。これまでGASを利用したことがないので、ちょっと敷居が高いです。
Googleカレンダー側からiCalendarファイルをエクスポートしてみると、「アラーム設定」の情報は「BEGIN:VALARM」から「END:VALARM」の間にあるようです。このような情報は、もちろん、Schedule Watcher側でエクスポートしたiCalendarファイルには入っていません。Googleカレンダーが出力したファイルには「ACTION:DISPLAY」とあり、その他にも「TRIGGER」なども指定されています。もしかすると、Schedule Watcherが出力したiCalendarファイルを加工して、無理矢理「BEGIN:VALARM」~「END:VALARM」を付け加えれば、Googleカレンダーにインポートしても、勝手にアラームが追加されることはないかもしれません。
それでは「ACTION」に何を設定すれば良いのでしょうか。参照できる資料がわかりませんが、「ACTION:NONE」とかではどうでしょうか。試しに、Schedule WatcherがエクスポートしたiCalendarファイルをエディタで編集し、次のようなものを付け加えてみました。これをGoogleカレンダーでインポートしてみましたが、エラーが出ることもなく、勝手にアラームが設定されることもないようです。
BEGIN:VALARM
ACTION:NONE
END:VALARM
ワークフローとしては、次のようになると思います。この方法なら、スケジュールをSchedule WatcherとGoogleカレンダーで同期できそうです。GoogleカレンダーからSchedule Watcherへの同期は考えていないのですが、スケジュールを変更した際には再同期が必要になります。ただし以前にGoogleカレンダーに登録したスケジュールが残っていると、再同期することで重複が生じてしまうので、この問題を解決しておかなければなりません。これはGASを使わないと解決できなさそうです。
- Schedule Watcher側でエクスポート
- iCalendar形式ファイルを加工(WSL2のUbuntu上でsedでも使おうかと思います。)
- Googleカレンダー側でインポート