はじめに
hkob の雑記録の第614回目(連続188日目)は、後期時間割の依存関係設定スクリプトを作成した件を記録しておきます。
前期との違い
前期では ics から Notion タスクを自動生成するスクリプトを実行していました。このスクリプトでは自動的に1回目から15回目までの授業に依存関係を自動で設定していました。
ただ、その後 6 月に以前の Google Calendar と Notion の同期システムに戻したのでした。
後期の授業登録は ics ファイルをクリックすることで、Google Calendar にイベントを登録しました。上に示した同期システムにより、自動的にタスクが生成されました。
依存関係の自動設定
そうなると前期に設定されていた依存関係は自動的に設定されることはなくなります。それは不便なので、さっと concat_tasks.rb というスクリプトを作成してしまいました。この程度のものだと数分で作成できてしまうのが、NotionRubyMapping のいいところです。
#!/usr/bin/env ruby # frozen_string_literal: true require "date" require "notion_ruby_mapping" include NotionRubyMapping NotionRubyMapping.configure do |config| config.notion_token = ENV["AMBASSADOR_NOTION_API_KEY"] config.wait = 0 end TASK_DATA_SOURCE_ID = "1f70ce2a652080cebc36000b08bc3b11" ds = DataSource.find TASK_DATA_SOURCE_ID tp = ds.properties["Task name"] sp = ds.properties["Status"] dp = ds.properties["Date"] pages = ds.query_data_source tp.filter_starts_with(ARGV[0]).and(sp.filter_equals "Not Started").ascending(dp) pre_page = nil pages.each do |page| p page.title if pre_page page.properties["blocked by"].relation = pre_page.id page.save end pre_page = page end
使い方は以下のようになります。引数で示した文字列で始まる Not Started のタスクを日付順に取得し、blocked by に一つ前のページを登録しているだけです。冪等性があるので、何度やっても問題ないので、もう一度実行してみました。うまく動いているようです。
concat_tasks.rb "プログラミングI(24)" "プログラミングI(24)[1]" "プログラミングI(24)[2]" "プログラミングI(24)[3]" "プログラミングI(24)[4]" "プログラミングI(24)[5]" "プログラミングI(24)[6]" "プログラミングI(24)[7]" "プログラミングI(24)[8]" "プログラミングI(24)[9]" "プログラミングI(24)[10]" "プログラミングI(24)[11]" "プログラミングI(24)[12]" "プログラミングI(24)[13]" "プログラミングI(24)[14]" "プログラミングI(24)[15]"
おわりに
今なら AI に頼めばやってくれるのですが、個人のものは AI の利用量には制限があるので、決定論的なものであればスクリプトでやってしまったほうがいいですね。