背景
他の人と予定を共有する際に過去の日程は見せずに今後の予定のみを共有したいときのメモ。
以前の予定はその人に公開することを前提として登録してきました。
そう大したことが書いてある訳ではないですが、公開することには抵抗があり、とはいえ削除してしまうのも後から見返せないため微妙です。
また、別のカレンダーを作成して、今後はそちらに登録していくことも考えましたが、それでは過去の予定と別々になってしまい、あまり嬉しくありません。
やりたいこと
過去の予定は非公開にしたまま、今後の予定のみを公開したい。
過去の予定については中身のみを非公開とし、枠は残して置くこととした。
今後の予定は公開設定で登録していきたい。
やったこと
- Googleカレンダーよりカレンダーをエクスポート
設定→インポート/エクスポート→カレンダーをエクスポート
- エクスポートしたファイルを編集
エクスポートしたzipファイルを展開し、目的のカレンダーのicsファイルを編集する。
awk '/^BEGIN:VEVENT/ {in_event=1} /^END:VEVENT/ {if (!class_found) print "CLASS:PRIVATE"; in_event=0; class_found=0} /^TRANSP:/ {print "TRANSP:OPAQUE"; next} /^CLASS:/ {print "CLASS:PRIVATE"; class_found=1; next} {print}' input.ics > output.ics
すべての予定に対して下記を行っています。
- TRANSP: TRANSPARENT → TRANSP:OPAQUE
- CLASS: PUBLIC or CLASS行自体が未定義 → CLASS:PRIVATE
- 目的のカレンダーからイベントを全削除
(メインカレンダーの場合のみ必要な手順。他のカレンダーでは不要な可能性があるので要確認)
編集したicsファイルをGoogleカレンダーにインポートすればよいのですが、過去の予定が残っていると権限の問題でインポートできません。
そこで、過去の予定を削除します。
※危険な操作のため挙動を事前に別のカレンダー等で確認してください
設定→マイカレンダーの設定→{目的のカレンダー}→カレンダーの削除
- エクスポートしたファイルをGoogleカレンダーにインポート
設定→インポート/エクスポート→目的のカレンダーにインポート
参考
-
Googleカレンダーの過去の予定を非公開にする方法
やり方や仕組みの詳しい解説があります。