2008年4月18日金曜日

Gcal2PDFの使い方

GCal2PDFは、Googleカレンダーからデータを取得・組版して、PDF形式のスケジュールシートを出力するアプリケーションです。

出力サンプル(A4・4行)














出力サンプル(A4・3行)














出力サンプル(A5・1行)



















①Java実行環境のインストール
Gcal2PDFはJavaアプリケーションです。実行するためには「Java実行環境(以下、JRE)」が必要です。
JREはこちらのページから無料でインストールできます。

②Gcal2PDFのダウンロード及び解凍
次のリンクからお使いのOSに対応したファイルをダウンロードし、マイドキュメントなどの適当な場所においてください。

Gcal2PDF_WIN_2010122.jar
(Windows用)
Gcal2PDF_GTK_2010122.jar
(x86/GTK 2)

・同梱しているライブラリについて
Gcal2PDFは、GoogleEclipse.orgBruno Lowagie・Paulo Soares両氏が、それぞれ配布するライブラリを改変せずに同梱しています。これらのライブラリは、それぞれが定めるライセンスに沿った形態での再配布が認められています。わたしはこれらのライセンスに準拠して、パッケージにライブラリを同梱しています。
ただし、もしあなたが、わたしが作ったパッケージをダウンロードし、さらにそれを再配布しようとするならば、同梱されるライブラリについて、それぞれが定めるライセンスに準拠して行う必要がありますので注意してください。

③操作
ダウンロードしたjarファイルをダブルクリックしてください。
JREが適切にインストールされていれば、次のようなウィンドウが立ち上がります。








有効なGoogleカレンダーIDとパスワードをそれぞれ入力してから、「出力スタート」ボタンを押します。
PDFファイルができあがるまで少々かかります(わたしのPCでは10秒くらい)。
次のようなダイアログが表示されるまでお待ちください。







④Gcal2PDFが生成するファイルについて
ここまでの操作を行うと、jarファイルがおいてあるフォルダのなかにPDFファイルができあがっているはずです。
またGcal2PDFは、一度入力したID、パスワード等の設定を記憶するので、次回以降入力の手間が省けます。これらの情報は、同 じフォルダのGcal2PDF.savというファイルに格納されますので、このファイルの取り扱いには十分注意してください。
※LinuxではJREのカレントディレクトリの扱いがWindowsとは異なるため、上記のPDFファイルやセーブファイルの保存先はユーザーのHOMEディレクトリになります。
※つまりこのファイルを調べればIDやパスワードが丸わかりなので、第三者にあげたりしないでください。

⑤印刷するときの注意
AdobeReaderでは、ページの縁が切れるを防ぐため、本来のレイアウトより少々小さめに印刷するようです(ページの縁ぎりぎりまでレイアウトしてあるファイルの場合)。このため、Gcal2PDFで出力したPDFファイルをAdobeReaderで印刷すると、ページを週毎に等分してある本来のレイアウトどおりに印刷されません。
これを避けるためには、AdobeReaderの印刷設定画面にて、「ページの拡大/縮小」を「なし」に設定してください(デフォルトでは「大きいページを縮小」になっています。)。

46 件のコメント:

匿名 さんのコメント...

またまた、ダウンロードして使わせてもらいました。
とっても便利です。
あと、印刷する期日の範囲が変えられたりしたら、今のところこの分野では最強のツールじゃないんでしょうか。
印刷フォームを色々いじったバージョンなんかが出てくると、もっと楽しいですよね。
僕にスキルがあれば、いろいろといじりたいのですが・・・
もちろん今のままでも十分便利ですけどね。
ありがとうございます。

shido さんのコメント...

feifonさん、
早速のコメントありがとうございます。

印刷範囲の期間指定ですが、当初はつけるつもりでした。
ただどんな期間を指定できたら便利なのか、というのがいまいちわからなかったので、とりあえず初版では省いてしまいました。

現在の仕様では、印刷時点の前週から12週間分を印刷するようになっています(これはわたしの好みです)。人によっては先々週から印刷したいかもしれませんし、もっと先の予定まで印刷したい人もいるかもしれません。また年区切りで動いている人なら「去年のいまごろ」のスケジュールを印刷したい、ということもあるかもしれません。

このあたりでユーザーインターフェイスを考え中です。
feifonさんなら、どんな期間を指定したいですか?

今後もなにかご意見やご感想があれば、ぜひともお聞かせください。

よろしくお願いします!

shido

匿名 さんのコメント...

早速、対応いただいてありがとうございます。
僕の場合は金曜日に次週以降の予定を考えますので、次の週から印刷できるのがベストですね。
前は、Googleの貧弱な印刷で工夫しながらやっていたので、夢のような快適さです。
このプログラムは、印刷のバリエーションが増えれば、十分商品になるのではないでしょうか。
僕としてはこのままの方がいいですが・・・

shido さんのコメント...

feifonさん、
帳票についてですが、1日の予定が7個を越えたあたりから、次の日のスペースに問答無用ではみ出してしまう、という大問題が残っているので、これを直すのが次の課題ですかね・・・。
それが済んだら、こんどはクオバディスダイアリーみたいなバーティカルタイプを作ってみたいです。
その時々で手帳の種類を変えられる、というのも手帳プリントアウト派の醍醐味と言えるでしょう(そんな派閥があったとして)。

shido

匿名 さんのコメント...

予定の数の上限は、こういうプログラムではどうしてもネックになりますよね。フォントを小さくして対応できれば、それが一番いいかもしれませんが・・・
まあ、7つ以上予定がある場合は、逆に超整理手帳のフォームを使うこと自体が難しいということになるのかなという気が、僕はします。予定の密度によって、使うフォームが変わるということではないでしょうか。
クオバディスはいいですよね。僕はGoogleカレンダーを使う前は、フランクリンシステムのウイークリーとデイリーを併用して使っていましたが、クオバディスも候補の一でした。
手帳プリントアウト派は結構多いと思いますよ。特に、人とスケジュールを調整するときには、やはり、紙に印刷されたスケジュールは欲しいですから。

shido さんのコメント...

feifonさん、
ある程度までなら1日の予定が増えてもなんとかなるようにしてみました。
ぜひ試してみてください!

ふつうに使う限りは、今までと何にも変わらないんですが・・・。

shido

匿名 さんのコメント...

はじめましてー!
こんな便利なソフトがあるとはとニヤニヤしているところなんですが、
ひとつ気になるところが。
スケジュールをPDFにする以前から、長期にわたって横たわる案件が表示されないんですよねー?
たとえば、一日から月末まである予定を、10日からPDFにしたら出てこないとか。
確認をしていないので、私の一つだけの案件が見えないだけでほかの条件ですれば見えるかもなんですが・・・・

shido さんのコメント...

contaxさん、
コメントありがとうございます。

ご指摘の件ですが、たしかにそうなりますね・・・。
全く気づいていませんでした(-_-)。

shido さんのコメント...

(前項のつづき)
調べたところ、現状Googleが提供するAPIでは、抽出する期間より前に開始され、抽出する期間内または後に終了するイベントをもれなく取得する方法は無いようです。

”GoogleCalendarDataAPIフォーラムより抜粋・Google社 Austin氏談”

Hi,

There are no special parameters to the feed to filter all events that
overlaps with a specific time range. The only filtering is done
through the overlapping of start time.

Hope it helps,
Austin

・・・ということは、ユーザーが指定した期間より念のため少々さかのぼって、長いイベントのしっぽが無いかどうかを地道に調べる、という方法しかなさそうです。
もし何年も前からずっと続いているようなイベントがあった場合はもうお手上げですが・・・。

すみやかに善処いたします<(_ _)>。

shido

匿名 さんのコメント...

こんにちは。
ダウンロードして試したのですが、GoogleAppsには対応していないですよね...?
対応して頂けるとユーザーがどっと増えそうな気がします!

shido さんのコメント...

匿名さん(^_^;)、こんにちは。

GoogleAppsというと、独自ドメインかつサポート付きでGoogleの各種サービスが使える、というあれですね(実はよくわかってない)。

当アプリはGoogleカレンダー規定のURLにリクエストを出して、レスポンスを処理する、という流れで動いています。

たとえば、ログインしたユーザーが持っているカレンダー名を全部取得するためのURLは、http://www.google.com/calendar/feeds/default/allcalendars/full
など。

GoogleAppsだと、これらのURLのどこかに独自ドメインが挿入された個別のものになるんだろう、と思います。

もしそうなら、プログラムの修正はものすごく簡単なんですけどね。

ちょいと調べてみます。

shido

Unknown さんのコメント...

はじめまして。
長年探し求めていたアプリケーションで、非常に便利に使ってます。

一点だけ困っているのが、職場のイントラネット内で利用しようとすると、Gcal2PDFからの通信が失敗する点です。
恐らく、proxyの設定ができればいいと思うのですが、本プログラムの場合、引数や、環境変数などで設定できるのでしょうか?

shido さんのコメント...

GAMさん、はじめまして。
コメントありがとうございます。

当プログラム自体には、proxyを設定する機能はいまのところありません。プログラムからproxyを設定することはできるらしいのですが、プログラムを書いているとき、そのような使いかたを全く想定できていませんでした。

このような場合、当プログラムを実行しているJavaにproxyを指定するという方法が考えられます。

「コントロールパネル」の中の「Java」より、Javaコントロールパネルを開き、「基本」タブ・「ネットワーク設定」ボタンから、Javaが通信する際に使うproxyを設定できます。

上記の方法によった場合、当該コンピュータで実行するすべてのJavaプログラムが、上記のproxy設定下で動くことになります。

プログラムごとにproxy経由の有無を設定したい場合には、コマンドプロンプトから、Javaに以下のようなオプションを付けてプログラムを実行することになります。

java -Dhttp.proxyHost=**.**.**.** -Dhttp.proxyPort=**** -jar Gcal2PDF_WIN_20080511_fat.jar

※**.**.**.**と****は、それぞれ使用するproxyのアドレスとポートです。

一応、適当なプロキシを使って上記二つの方法をテストし、それぞれ動作することを確認しています。
ただ会社のイントラネット内からだといろいろ事情も違うかもしれません。
うまくいくことをお祈りします。

shido

Unknown さんのコメント...

shidoさん、

早速のご回答、ありがとうございます。
設定の仕方は理解できました。

残念ながら、こちらの環境では、Javaコントロールパネルからのネットワーク設定、コマンドプロンプトからオプションを付けて実行する方法のいずれも、通信することができませんでした。

おそらく、こちらの環境特有の制限がどこかに働いているのだと思います。

お手数をおかけしました。
また、素早い適切なご回答、感謝します。

shido さんのコメント...

gamさん、
お役に立てなかったようで、申し訳ありません。

他に思いつくとしたら・・・。

Javaが行う通信をファイヤウォールがブロックしている、といったケースでしょうか。

「ブラウザからは普通にGoogleカレンダーを使えるのに、Gcal2PDFは失敗する」、という状況であればこれに該当する可能性大です。

匿名 さんのコメント...

以前からこんなツールがほしいと思っていました。非常に便利に使わせていただいています。ただ、ひとつ問題が...

pdfにしてみると、たまに表示されていない予定があります。どうも、「定期的な予定」として入れている項目にヌケが出ているようです。

まあ、定期的なので、そんなに忘れることもないのですが...対応していただけると助かります。

よろしくお願いします。

shido さんのコメント...

noriさん、ご指摘ありがとうございます。

以下の修正ファイルではいかがでしょうか?

http://www.box.net/shared/w65rn8vwck

以前他の方から同様のご指摘があったときに急作りで作ったものなのであまり自信がありませんが・・・。

shido

匿名 さんのコメント...

shidoさん、早速の更新、ありがとうございます。

いま確認したところ、大丈夫そうでした。どうもありがとうございました。

しかし、あまりに素早くてびっくりです...
これからもよろしくです。

匿名 さんのコメント...

harappaと申します。
利用してみました。
時刻が9時間前に設定されてしまいます。
何が起こってるのかさっぱりわかりません。
例えば12時開始は3時からというようになります。
何かわかりましたらお教えください。

shido さんのコメント...

harappaさん、
時刻が9時間前に設定される、とのことですが、おそらくグリニッジ標準時(GMT)と日本標準時の時差:+9時間が解消されず、GMTのまま表示されているようです。

お使いのPCの時計時刻、または、ロケールに関する設定は、日本のものに一致していますでしょうか?

shido

Unknown さんのコメント...

よいものを見つけました。使わせていただきます。できましたら、64bitのubuntuでも利用したいのですが、是非対応をお願いします。

shido さんのコメント...

Shuichiさん、コメントありがとうございます。
タイムリーなことに、わたしも最近64bitのubuntuにしたところです!
こちらをどうぞ。

http://www.box.net/shared/4v19z8fem1

ともくぼ さんのコメント...

大変便利なソフトウェア、ありがとうございます!!
Googleカレンダーを使い続けるか、紙の手帳に戻るか、気持ちが行ったり来たりしていたのですが、これでGoogleカレンダー続行に決心できました!
図々しくも、ひとつご検討いただきたいことがございます。
Googleカレンダーの月表示のように、予定の開始時刻を各日の左端に表示することは可能でしょうか?
(全日の予定とのレイアウトの整合が難しいんでしょうね。。。)

zaki さんのコメント...

素晴らしいアプリケーションの公開、ありがとうございます。知人にも勧めたくて、自分のブログにて紹介させていただきました。
不都合などありましたら改修いたしますのでご連絡ください。
これからも愛用させていただきます。

酒井一成 さんのコメント...

すばらしいです。いままでもやもやしていたものが一気に吹っ飛んで、手放せないものになりそうです。

できれば、というお願いをひとつ。

時間を指定しない全日の予定を、時間指定のものと同じように表示する(白抜きではなく、単に文字に色をつけて)ことができるといいと思いました。印刷すると、どうしてもそればかりが重くなったり裏移りしたりしてしまうので。

ともあれ、末永く使わせていただけそうなアプリに巡り会えました。ありがとうございました。

shido さんのコメント...

>ともくぼさん、コメントありがとうございます。
レスが大変遅くなりまして申し訳ありません。

予定の開始時間を右に表示しているのは、お察しのとおり、レイアウト上の都合によるものです。
先日、日本能率協会の本を読んでいたら、「スケジュールを伝えるときは、必ず時間から述べるべし」と書いてありました。
全くそのとおりだと思ったのですが、自分がつくったものが時間が後表示になっており、げんなりした次第です。
なおしたいのですが、なにぶん時間が…。

shido さんのコメント...

>zakiさん、コメントありがとうございます。
レスが大変遅くなりまして申し訳ありません。

拙作を気に入っていただき、誠に光栄です。
ブログも拝見いたしました!

shido さんのコメント...

>酒井一成さん、コメントありがとうございます。

お申し越しの件ですが、現状の機能でおそらく可能です。

ただいま出先のため実物での確認ができないのですが、最初の画面の下の方にある「詳細設定」といったボタンを押すと、googleカレンダー上のカレンダーがずらずらと表示されます。そしてカレンダーごとに、終日予定および時間指定予定について、それぞれ白抜き強調表示するかしないかを設定できるように作ったと記憶しています(デフォルトでは、わたし個人の好みから、終日予定を白抜き強調表示する設定になっています)。
お試しください。

酒井一成 さんのコメント...

>shidoさん
確かに白抜き強調しないことができました。きちんと確認しないで書き込んでしまい申し訳ありません。

このところ予定が多くなって、それに伴いフォントを小さくしようと思ったのですが、10ポイントよりも小さくはならないようですね。使い方のほうで工夫したいと思います。

どうもありがとうございました。

zaki さんのコメント...

3か月ほど前に、コメントした者です。
丁寧なお返事をいただき、ありがとうございました。

以来、愛用させていただいているのですが、惜しいことに私の環境ではフォントサイズが10ptから変更ができずにいます。(フォント名の方は変更できています。)
お手すきのときで構いませんので、私共の方で確認できる点や対処法などありましたら、アドバイスをいただけますでしょうか。

ちなみに私の環境は
OS:Windows Vista/JAVAのバージョン:1.7.0_60(最新バージョン)
フォント:MSゴシック/出力ファイルの体裁:A5スケジュールシート(1頁1週)
です。

お手数をおかけしますがご教示のほど、どうぞよろしくお願い申し上げます。<(_ _)>

shido さんのコメント...

>zakiさん、
ご指摘の件ですが、結論から申しますとフォントのサイズ変更はできません…。

ユーザーがフォントサイズを変更できるようにすると、私の技量では体裁を保つのが非常に困難であると判断したためです。

にもかかわらず、設定画面においてフォントサイズが見かけ上指定できるのは、Windows標準のフォントチューザを呼び出しているせいで、本アプリでは設定できない項目まで表示されてしまっています。

本当はフォントの種類だけを選択できるようなUIを自力で作るなりするべきなのですが、かなり労力がかかりそうだったので、現状のようなことになってしまっております。

まぎらわしくてすみません。

zaki さんのコメント...
このコメントは投稿者によって削除されました。
zaki さんのコメント...

shidoさま
丁寧なご対応、ありがとうございました。

そういった事情があったんですね。納得しました。

こちらこそ、どうも申し訳ありませんでした。
引き続き愛用させていただきますね。

山内 さんのコメント...

数年来愛用させていただいています。
ところが最近、「サーバーからデータを取得できませんでした。しばらく時間をおいてから再度実行してみてください」というアラートが出てデータの取得ができなくなりました。
PC側のOSの変更などはしていません。
また、詳細設定の画面でカレンダー再取得などは問題なくできます。

shido さんのコメント...

>山内さん、

通信や認証の問題ではないようですね。

Googleカレンダー上のカレンダーを、追加・削除・名前変更したことはありませんか?
既に存在しないカレンダーが「印刷対象」として設定ファイルに残留しており、それからデータを取ろうとして失敗している可能性があります。

設定ファイル(gcal2pdf.sav)が当アプリと同じ場所に作成されているはずですが、それを削除するか、いったん別の場所に移動させてから、再度アプリを起動させ、「素の状態」からやり直してみてください。

それでも治らない場合や「もうそれは試した」という場合は、お手数ですが再度コメントをください。

山内 さんのコメント...

>shidoさん
Gcal2PDFが使えなくなったタイミングでもしかしたらカレンダーを追加したかもしれませんが、削除・名前変更はしていません。

gcal2pdf.savの削除は試してみましたが、うまくいきませんでした。念のため今、もう一度削除してやってみましたが、やはりうまくいきませんでした。

山内 さんのコメント...

>shidoさん

先ほど、gcal2pdf.savを削除したけどうまくいかなかった、と書きましたが、そのままほっておいたらファイルができていました。
ただ、なぜかそのファイルを開こうとすると「ほかのアプリケーションで使われています」とReaderでエラーが出たのですが、一度Gcal2PDFを再起動してやり直したらうまくいきました。
お騒がせしました。これで様子を見てみます。

sakka さんのコメント...

2年ほど愛用させていただいております。
最近、山内さんのコメントと同じように「サーバーからデータを取得できませんでした。しばらく時間をおいてから再度実行してみてください」というアラートが出てデータの取得ができなくなりました。
設定ファイルの削除を行ってみましたが、症状はかわらずです。
Googleカレンダー上のカレンダーを、追加・削除・名前変更は行っておりません。
なお、詳細設定で、カレンダーリストの取得を行うと、「ユーザー認証に失敗しました」とのメッセージが表示されます。
解決方法がございましたら、ご教示頂けますようお願いいたします。

KEI さんのコメント...

いつも便利に使わせて頂いております。
私も今月からsakkaさんと同じく、データの取得ができずに困っております。
google側の仕様変更のようにも感じられますが、解決方法等ございましたら、お知らせいただけると助かります。
よろしくお願いします。

meisarah さんのコメント...

もう何年も前から便利に使わせて頂いています。
ただ、昨日1か月ぶりに使ってみると、「ユーザー認証に失敗しました」というメッセージが出て次に進めません。
ID・パスワードは何度も確かめて入力しましたがダメでした。
グーグル側の問題でしょうか?
解決方法があると助かります・・・

kiwazou さんのコメント...

私も他の皆さんと同様に「ユーザー認証に失敗しました」というメッセージが出て次に進めません (>_<)

GCAL2PDFは、もう私のスケジュール管理の重要な一角を担っておりまして、なんとか助けていただけると幸甚です。

javaには、そんなに詳しくないのですが、もし、ソースを見せていただければ、お忙しいであろうshido様に代わって、チャレンジしてみたいとも思っておりますが、いかがでしょうか。。。。

shido さんのコメント...

>sakkaさん、KEIさん、meisarahさん、kiwazouさん、
コメントありがとうございます。最近公私いろいろあってお返事が遅れてしまいました。
お申し越しの件ですが、調査したところ、どうやらGoogleが旧apiを廃止した模様(?)。
つまり、古いやり方でデータをとっていて、経過措置としてこのやり方も認められてきたけど、いよいよ廃止になったということらしい。
apiの刷新は数年前に行われたことなので、その時点で対策しておくべきだったのですが、すみません。
年内を目処になんとか動くようにしてみたいと思います。また経過をBlogでお伝えします。

shido

kiwazou さんのコメント...

shidoさん
 お忙しいところ、お返事いただきありがとうございました。
 何かお手伝いできることがありましたら、遠慮なく言っていただければと存じます。

kiwazou

KEI さんのコメント...

shidoさま、お返事ありがとうございます。
お忙しい中恐れ入ります。
他力本願で申し訳ないのですが、ご対応頂けると大変ありがたいです。
よろしくお願いいたします。

sakka さんのコメント...

shido様
お忙しいところ、ご対応ありがとうございます。
お力になれず申し訳ありませんが、何卒よろしくお願いいたします。

紙様 さんのコメント...

shidoさん
お忙しい中申し訳ありません。愛用させていただいております。旧暦や外国の祝日がUnicodeで表示でき、助かっております。
不具合でこちらに伺いましたら、このタイミングで皆な同じ症状が出ているようですね。結構ユーザーがいた事が分かりました。改善を期待しております。
あと、以前からうかがいたかったのですが、非常に短い予定でも改行されて幅を取ってしまう点と、予定の表示順が調節できない点はやむを得ないのでしょうか?具体的には旧暦がいつも一番上に来て干支宿が縦に並ばず(改行せず)横になってほしいのです。
何卒よろしくお願いいたします。