前回の記事でNotion APIを使って繰り返しタスクの更新するプログラムをご紹介したのですが、 www.hanatare-papa.jp 検証不足でtime_zoneの変更ができていなかったことに気づいていませんでした。 今回はその事象の紹介と、現時点(2020/01/24)での対応方法について紹介したいと思います。
- APIではDateプロパティのタイムゾーンがAsia/Tokyoにならない
- APIで日本時間にする方法
Date プロパティのTimezone変更ができない事象
前回の記事でNotion APIを使って繰り返しタスクの更新するプログラムをご紹介しました。 その中で、Dateプロパティの項目に対して以下のように値を設定していました。
properties[task_management_list["plandate"]] = { "date":{ "time_zone":"Asia/Tokyo", "start":update_task_val["planStartDate"], "end":update_task_val["planEndDate"] } }
コードの内容を紹介しておきます。
- task_management_list["plandate”]・・・Notionデータベースの項目の名前をリスト化していて、値には『予定開始-終了日』がはいるようになっています
- date・・・要素がDateプロパティであることを明示しています。
Dateプロパティに渡せる要素は以下の3つです。
- time_zome・・・タイムゾーンです。
- start・・・開始日時
- end・・・終了日時
今回のプログラムで要素に渡している値は以下のとおりです。
- time_zome・・・Asia/Tokyo
- start・・・update_task_val["planStartDate"]
- end・・・update_task_val["planEndDate"]
start・endにはそれぞれ開始日時と終了日時を設定しています。 具体的な日付の値は以下のようになります。
time_zomeをAsia/Tokyoで指定しているので、本来であれば、東京の時間でNotionに登録ができるという想定でしたが、プログラムを実行するとタイムゾーンがUTCで登録されていました。
UTCだと困る理由
私の場合はタイムライン形式でスケジュールを確認する際にタイムゾーンがUTCのままだと問題がありました。 UTCのままだと、具体的に9時間の誤差がある状態でタイムラインが表示されてしまいます。 具体的に以下のようになります。
- テーブル形式で表示
- タイムライン形式で表示
テーブル形式では7:00-13:00の開始・終了時間ですが、タイムライン形式で見ると16:00-22:00になり、その誤差が9時間になります。
問題解消のためにサポートに確認
上記の事象をサポートに確認したところ、以下のように回答をもらいました。
要するにバグのようです。解消方法も案内をいただきましたので次はその方法を紹介します。
対応方法
↓
After:2022-01-24T07:00:00.000+09:00
サポートの回答のように、日付を項目の値の形式を設定してあげれば解消が可能です。 この値を渡してプログラムを動かすと以下のようにtime_zoneになります。
タイムゾーンがアジア/東京にはなりませんが、これでも問題ありません。 +09:00は世界の標準時間に対する日本の時差を補正する設定です。
まとめ
今回はNotion APIを使ってtime_zoneを正しく設定する方法を紹介しました。同じような悩みで悩まれている方の解決につながっていれば幸いです。前回の記事もプログラム自体は修正をして更新をしています。 www.hanatare-papa.jp
ちなみにサポートの方からはチーム内にバグを報告し、2月か3月には解消するという回答がありましたので、もしかすると、この記事を見られたタイミングでは解消されているかもしれないですね。 この事象は2022年1月時点で確認できた内容になります。