資料室PC / スケジュールとTodo

スケジュールデータ anchor.png

多くのスケジュール(カレンダー)のアプリケーションで使用されるデータ形式に,iCalendarフォーマットがある。
ファイルの拡張子は.icsで,テキストファイルになっている。

フォーマット仕様は,fileRFC2445として規定されている。(更新バージョンRFC-5545

Page Top

GoogleカレンダーのスケジュールをiCalendar形式で取得する anchor.png

Googleカレンダーに登録しているスケジュールをWindowsのデスクトップに表示するような目的で,GoogleカレンダーのデータをiCalendar形式で取得してみる。

Page Top

GCALDaemonを使用してicsファイルでダウンロードする anchor.png

GCALDaemonはJavaアプリケーションで,WindowsやLinuxマシン等で使用できるGPLアプリケーション。

このGCALDaemonを使用すると,GooogleカレンダーのデータをicsファイルとしてローカルPCにダウンロード出来,さらにicsファイルを更新することで,Googleカレンダーのデータを更新するということも出来ていた。
しかし,2014/11/17にGoogleはGCALDaemonが動作するCalendar API v2のサポートを突然廃止し,代わりにCalendar API v3(認証にOAuth 2.0を使用する)に移行した。
このことでGCALDaemonはうまく動作しなくなってしまって,しばらくして上記のGCALDaemonのサイトもなくなってしまった ;(

その後しばらくして,Calendar API v3で動作できるGCALDaemonが修正バージョンとして公開された。いまのところ問題なく動作している。

Calendar API v3に対応したGCALDaemonをインストールするには,GCALDaemonからgit cloneするなりして,任意のディレクトリにダウンロードする。

次にGCALDaemonがGoogle Calendar APIにアクセスできるように,Google Developper ConsoleでGoogle Calendar APIを有効にする必要がある。
WEBブラウザーでGoogle Developper Consoleにログインして,以下の作業をする。

  • 新しいProjectを作成する
    任意の名前で作成して大丈夫。
  • そのProjectでGoogle Calendar APIを有効にする
  • クライアントIDを作成する
    • Installed applicationを選択して,Configure consent screenボタンを押す。
    • EMAIL ADDRESSを入力。
    • PRODUCT NAMEにGCALDaemonと入力。
    • 保存ボタンをクリック。
    • APPLICATION TYPEはOtherにする。
  • Download JSONでファイルをダウンロードする
    ファイル名をclient_secrets.jsonにしてGCALDaemon\etcディレクトリを作成して,そこにファイルをコピーする。

その後,GCALDaemonの設定をする。
config-editor-new.batを実行して,File synchronizerで使用するGoogleカレンダーとローカルのicsファイルの場所とファイル名を登録する。

これでGCALDaemonを使用する準備が出来たので,インストールしたディレクトリあるbin\sync-now-new.batを実行してGoogle Calendarからデータが設定したicsファイルに保存できているか確認する。
問題なければbin\sync-now-new.batでのGoogleカレンダーとicsファイルを手動での同期は出来ているので,タスクスケジューラーで定期実行するようにすればOK。

残念ながら,GCALDaemonではGoogle Tasksのデータはサポートされていない。

Page Top

Desknet's NEOのスケジュールデータをiCalendar形式で取得する anchor.png

会社で使われているDesknet's NEOのスケジュールデータをical形式で取得する。

http://<Desknet's NEOのURL>/scripts/dneoical/dneoical.exe?userid=xxxxx&_word=yyyyyy&from=今からどのくらい前(月単位)&to=いまからどのくらいあと(月単位)

のようにすれば,Desknet's NEOのスケジュールデータがical形式で取得できます。(xxxxxはアカウントID,yyyyyyはパスワード)

以下のようなBATファイルを作って,

wget -O todo.ics "http://<Desknet's NEOのURL>/scripts/dneoical/dneoical.exe?userid=xxxxx&_word=yyyyy&from=2&to=2"

Windowsのタスクスケジューラーに登録しておけば,定期的にスケジュールデータを取り出せます。

残念ながらこの方法では,Desknet's NEOのスケジュールへiCalendar形式のファイルを使ってデータを直接登録することは出来ません。

Page Top

Rainlendarなどで利用できるようなフォーマットにする anchor.png

Desknet's NEOのdneoical.exeから出力されるiCalendar形式のデータはUID(fileRFC2445に規定されている)項目が出力されない。
このため,ほとんどのiCalendar形式に対応しているアプリでもDesknet's NEOが出力したデータを上手く利用出来ない。

Desknet's NEOを販売しているところで,仕様通りに出力するようにプログラムを修正して貰えればいいのですが・・・

しょうが無いんで,UID項目を追加することにします。

上記のようにして,Desknet's NEOから自分のスケジュールデータをdesknets_temp.icsというファイルに出力したとして,

awk '/DTEND/{print $0; print "UID:y-ueno"NR"@hogehoge.co.jp";} ! /DTEND/{print $0;}' desknets_temp.ics" > desknets.ics
rm desknets_temp.ics"

とかして,UIDを追加すれば他のアプリでも利用できます。
上記のデータ取得手順とともにBATファイルにしてタスクスケジューラーに登録して,定期的に実行して利用している。

BATファイルの例:get_desknet.bat(desknet'sの予定表をtodo.icsに保存する)

@echo off
rem desknet'sの予定表をダウンロードする
wget -O "desknets_temp.ics" "http://<Desknet's NEOのURL>/scripts/dneoical /dneoical.exe?userid=xxxxx&_word=yyyyy&from=1&to=3"
awk '/DTEND/{print $0; print "UID:zzzzz"NR"@hogehoge.co.jp";} ! /DTEND/{print $0;}' "desknets_temp.ics" > "desknets.ics"
rm "desknets_temp.ics"

ファイル名は,実際にはフルpath。

Page Top

NextcloudのTasksデータをiCalendar形式で取得する anchor.png

NextcloudはDropboxのようなオンラインストレージを自前のサーバーで構築できるサーバーアプリケーション。

このNextcloudのアドインアプリとしてCalendarというスケジュール管理を追加するものがある。(Googleカレンダーの機能を自前で用意できる)
PCのWEBブラウザやスマホの専用アプリからCalendarデータを登録・利用することが出来る。データはTodoリストと共有のようだ。

Page Top

iCalendar形式で取得する anchor.png

以下のようなBATファイルでデータをicsファイルに取得できる。

@rem nextcloudからCalendar/Todoデータをダウンロードする
wget --no-check-certificate --http-user="xxxxx" --http-password="yyyyyy" -O "todo.ics" "https://<nextcloudが動作しているサーバー>/nextcloud/remote.php/dav/calendars/<アカウントID>/personal?export"

CalendarデータだけでなくTodoリスト(Tasks)データも同時にダウンロード出来るようだ。

Page Top

Microsoft365の予定表をiCalendar形式で取得する anchor.png

Microsoft365(Outlook)予定表データをiCalendar形式のファイルとして取得すると,他のアプリケーションで利用ができ便利になる。

  • Microsoft365のカレンダーにWEBブラウザーでアクセスする。
    必要であればサインインする。
  • 予定表の画面右上の設定(歯車アイコン)をクリックし,右側に表示される設定画面の下にあるOutlookのすべての設定を表示をクリックする。
  • 予定表 → 共有予定表 → 予定表を公開する → 取得したい予定表を選ぶ → 権限(すべての詳細を閲覧可能などを選ぶ) → 公開 とすると,HTMLとICSのURLが表示される。
    表示されたICSのURLをコピーする。

以下のようなBATファイルを作成する。

wget -O "保存したいファイル名" "ICSのURL"

そして,そのBATファイルをタスクスケジューラーに登録しておけば,定期的に予定表データをicsファイルとして取得出来る。

残念ながらこの方法ではMicrosoft365の予定表にデータを登録することは出来ません。

Page Top

Windowsデスクトップにicsファイルのデータを表示する anchor.png

Page Top

Rainlendarでデスクトップにicsファイルのデータを表示する anchor.png

rainlendar.png

Rainlendarは。Windowsのデスクトップにスケジュールを表示したり編集したりすることが出来るアプリケーション。

無料で使用できるLiteバージョンと有料のProバージョン(9.95EUR)がある。
ProバージョンだとGoogleカレンダーやGoogle Tasks,Microsoft365/Office365やCalDAV,Remember The Milk,Toodledo等のクライアントして動作も出来るんで,上記のように苦労してローカルPCにicsファイルをいちいち作成する必要は無い。

Liteバージョンを使用している身なので,上記のようにしてGoogleカレンダーのデータをicsファイルのダウンロードして,それを利用することでGoogleカレンダーのスケジュールを表示している。

便利なことにRainlendar Liteでicsファイルのスケジュールを更新して,GCALDaemonを使用してGoogleカレンダーを更新することが出来る。

Page Top

Todoデータ anchor.png

Todoリストやタスク管理をしているデータを,カレンダーデータと同様にiCalendar形式で取得できると,いろいろなアプリケーションで利用出来て便利になります。

Page Top

Google tasksのTodoデータをiCalendar形式で取得する anchor.png

Google tasksは,GMailの中でTodoリストとして使用されている。

以前は,Google Task Porterで上手く取得できていたが,2012/10あたりのGoogle tasksの仕様変更で取得できなくなった。

Google Tasks Backupが使えそうなんだけど・・・
Google Tasks Backupは,Python/Google App Engine,Apache License 2.0のOSS。

他の方法としては,https://mail.google.com/tasks/android を使うとシンプルにTodoが表示されるので,ここからicsファイルに変換するようなプログラムを作れば良い気がするが・・・

いまだに良い方法が見つかっていない。

Page Top

TickTickのTodoデータをiCalendar形式で取得する anchor.png

TickTickは,シンプルで便利なTodoリストタスク管理アプリ。
PCのWEBブラウザやスマホの専用アプリからTodoデータを登録・利用することが出来る。

Page Top

iCalendar形式で取得する anchor.png

@echo off 
@rem ticktickからTodoデータをダウンロードする
wget -O "ticktick_tmp.ics" http://ticktick.com/pub/calendar/feeds/xxxxxxxxxxxx/basic.ics

TickTickのURLは,すべてのリストにアクセスできるURL(設定画面から確認出来る)。 注意することとして,期限を登録したTodoデータでないと,ダウンロードしたicsファイルにデータが入らない。

また,icsファイルのデータは,VEVENTタグになっているので,他のTodoアプリでもTodoデータとして利用できるようにVTODOタグに変更する。

awk '{sub("VEVENT", "VTODO"); print $0;}' "ticktick_tmp.ics" > "ticktick.ics"
rm ticktick_tmp.ics

こんなようにしてうまく利用できるようにした。

Page Top

remenber The milkのTodoデータをiCalendar形式で取得する anchor.png

remenber The milkは,シンプルで便利なTodoリストタスク管理アプリ。
PCのWEBブラウザやスマホの専用アプリからTodoデータを登録・利用することが出来る。

Page Top

iCalendar形式で取得する anchor.png

@rem remenber The milkからTodoデータをダウンロードする
wget --no-check-certificate --http-user=xxxxx --http-passwd=yyyyyy -O "todo.ics" http://www.rememberthemilk.com/icalendar/<アカウントID>/

でicsファイルとして,Todoデータをダウンロード出来る。

Page Top

NextcloudのTasksデータをiCalendar形式で取得する anchor.png

NextcloudはDropboxのようなオンラインストレージを自前のサーバーで構築できる。
そのNextcloudのアドインアプリとしてTasksというTodoリスト・タスク管理が出来るものがある。
PCのWEBブラウザやスマホの専用アプリからTodoデータを登録・利用することが出来る。データはCalendarと共有のようだ。

Page Top

iCalendar形式で取得する anchor.png

上記のCalendarデータの取得BATファイルでTodoデータも取得できる。

Page Top

WindowsデスクトップにTodoデータを表示する anchor.png

icsファイルにTodoデータを保存できれば,icsファイルをTodoデータとして処理できるアプリケーションでWindowsデスクトップに表示できる。

Page Top

RainlendarでTodoデータを表示する anchor.png

カレンダーのicsファイルを表示するのと同様に,TodoデータのicsファイルをRainlendarに登録すればTodoの表示ができる。


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1396, today: 4, yesterday: 4
最終更新: 2020-12-26 (土) 15:07:34 (JST) (1189d) by yuji