はじめに
hkob の雑記録の第100回目は、icsToNotion で取り込む元の ics ファイルを Excel で出力するシートを解説します。
icsToNotion
3/31 に授業タスクの流し込みを icsToNotion で実施しました。その際、授業間に自動的に依存関係を設定することで前の授業の内容をすぐに確認できることができます。
ics の生成
毎週行われる会議についても、前の会議が参照できると便利です。これを同じように登録するためには、ics ファイルが準備できればいいです。手で書くのは面倒なので、Excel で作ってしまいましょう。こんな形でタスク名、開始時間、タスクにかかる分数を入れると、ics の VEVENT が一つできるようにしています。Excel のテーブルヘッダに ics のヘッダ、テーブルフッタに ics のフッタを入れています。この結果、D列をコピーするだけで ics が出来上がることになります。

ちなみに数式は以下のようになります。

試したい人もいると思うので、テキストでも残しておきます。
=LET( date_format, "yyyyMMddTHHmmss", name,A3, sd,B3, sd_str, TEXT(sd, date_format), ed,sd + C3/24/60, ed_str, TEXT(ed, date_format), "BEGIN:VEVENT DTSTART;TZID=Asia/Tokyo:"&sd_str&" DTEND;TZID=Asia/Tokyo:"&ed_str&" SUMMARY:"&name&" END:VEVENT")
D列をコピーして、適当なエディタに貼り付けると以下のようになりました。ヘッダの部分と個々の VEVENT が複数行になってしまっているので、”” で括られてしまっています。

とりあえずエディタの置換コマンドで “” を削除してみます。

test.ics のような名前で保存するとうまく ics として認識されているようです。

icsToNotion.rb を実行すると無事にタスクが登録されました
> icsToNotion.rb test.ics test task 2025-04-09T21:00:00+0900 2025-04-09T22:00:00+0900
ダブルクリックするとカレンダーにも登録されます。

無事、Notion タスクもカレンダータスクも両方作成されていることがわかります。テストが成功したので、実際に1年分の会議を一気に作ってみました。Excel だと連続した日付を作るのが簡単ですね。ここでは3つの会議を日付順に並べてしまったので複雑に見えます。作成時にはそれぞれの会議でダブルクリックで連続日付を作成していました。

D列をコピーして “” の置換をしたものがこちらです。

コマンドを実行すると無事に全てのイベントが作成されました。

無事に Notion Task が設定されています。さらに直近のイベントにはオートメーションによって自動的に Sprint も設定されています。blocking として次の会議が正しく連結されていることもわかります。

おわりに
ics が簡単に生成できるといろんな連続タスクが Notion とカレンダーに同時登録できるので楽になりますね。それらの間に依存関係が設定されるのが非常に助かります。