カテゴリー内の他の記事

Googleカレンダー連携 - Garoonの予定をGoogleカレンダーに表示 -

フォローする

(著者:サイボウズ 竹内 能彦)

はじめに

Googleカレンダー使っていますか?自分の予定と他の方の予定を並べて表示したり、予定を共有したり出来てとっても便利ですよね。
そこにGaroonの予定を並べて見られたらもっと便利になると思いませんか?

そんな思い付きからGaroonの予定をGoogleカレンダーに表示する連携プログラムを作成しました。事前準備が少し大変ですが、皆さん是非使ってみてください。

概要

連携プログラムは以下の処理をコマンドラインから実行できるサンプルプログラムです。

  • Garoonに登録された予定をGoogleカレンダーに登録
  • Garoonで更新された予定をGoogleカレンダーに反映
  • Garoonから削除された予定をGoogleカレンダーから削除

Googleカレンダーに登録する情報はGaroonの予定の「開始日時」、「終了日時」、「施設」、「メモ」、「コメント」、「参加者」です。

動作環境

  • プログラム実行用端末(Java8が動作し、Garoon、Googleカレンダーにネットワーク接続できること)
    2018年3月現在、Java9では動作しないことを確認しています。
  • Garoon on cybozu、パッケージ版 サイボウズ ガルーン3.0.0以降
  • Googleカレンダー

Garoon on cybozu、Googleカレンダーは2018年2月版で確認しています。

事前準備

実行するには連携プログラムの設定だけでなく、GoogleアカウントやGoogleカレンダーの設定が必要になります。
また、GoogleアカウントやGoogleカレンダーの設定内容を連携プログラムの設定に利用するため、メモが必要な項目はその都度注釈を入れてあります。

※現在のGGsyncはOAuth2.0にも対応していますが、本ページではサービスアカウントキー認証を利用します。

 

1.Googleアカウント作成

下記URLから、Googleアカウントを作成します。Googleアカウントを取得済みの方はログインしてください。

https://accounts.google.com/SignUp

2.Google APIの利用設定

下記URLから、プロジェクトを作成します。

https://console.developers.google.com/project

 

プロジェクト名には適当な値を入力してください。

google-setting1.png

 

プロジェクトの作成完了後、Google Calendar APIを検索し、

google-setting2.png

 

Google Calendar APIを有効にします。

google-setting3.png

 

認証情報を作成します。

google-setting4.png

 

下記画像の通りの内容を選択し、「必要な認証情報」をクリックします。

google-setting5.png

 

サービスアカウント名には適当な値を入力し、キーのタイプはP12を選択します。

google-setting6.png

 

役割なしで作成します。

google-setting7.png

自動ダウンロードされたP12キー(以下、秘密鍵(拡張子がp12))は以降の手順で利用しますので任意のフォルダに保存します。

 

次にサービスアカウント IDを確認します。
画面右の「サービスアカウントの管理」をクリックし、

google-setting9.png

 

表示されたサービスアカウント IDをメモします。(以降の手順で利用します)

google-setting10.png

 

3.Googleカレンダーの作成

下記URLから、Garoonのスケジュールを連携させるGoogleカレンダーを作成します。

https://www.google.com/calendar

 

カレンダーの作成完了後、Googleカレンダー設定の「このカレンダーを共有」タブを開きます。先ほどのメールアドレスに予定の変更権限を付与し、保存します。

google-setting10.png

 

Googleカレンダー設定の「カレンダー情報」タブを開き、カレンダーIDを確認します。カレンダーIDは以降の手順で利用しますのでメモしてください。

4.連携プログラムの設定

プログラム実行用端末に連携プログラムを動作させるフォルダを作成します。本設定では例として「C:/GGsync」を利用します。
秘密鍵を「C:/GGsync」に移動します。
実行ファイル設定ファイルをダウンロードしてください。ソースはGitHubで管理しています。(外部サイトが開きます)

実行ファイル「GGsync.jar」と設定ファイル「GGsync.properties」を「C:/GGsync」に移動します。

設定ファイル「GGsync.properties」をテキストエディタで開き、コメントに従い設定します。
Googleカレンダーに登録する予定の色は1から11までの数値を指定できます。下記の色を参考に選択してください。

 

各カラーIDのカラーコードはこちらのコメントから確認できます。
(tomomo85さん 情報ありがとうございます)

 

実行手順

プログラム実行用端末でコマンドプロンプトを起動し、以下のコマンドを入力します。

> java -jar C:/GGsync/GGsync.jar C:/GGsync

コマンドの形式は「 java -jar 実行ファイルのパス 設定ファイルが存在するフォルダ」です。
「The sync completed.」と表示されればスケジュール連携に成功しています。

実行結果は設定ファイルが存在するフォルダ配下のGGsync.db(例ではC:/GGsync/GGsync.db)に保存します。GGsync.dbは次回実行時の差分反映に利用します。

プロキシ経由の実行

プロキシを経由する必要がある場合は下記のオプションを追加して実行してください。

> java -Dhttp.proxyHost=ホスト名 -Dhttp.proxyPort=ポート番号 -Dhttps.proxyHost=ホスト名 -Dhttps.proxyPort=ポート番号 -jar C:/GGsync/GGsync.jar C:/GGsync

オプションの詳細はこちら(Oracle社のドキュメントページが開きます)

セキュアアクセス利用時の実行

セキュアアクセスを利用する必要がある場合は、クライアント証明書をGGsync.jarと同じディレクトリに保存し、下記のオプションを追加して実行してください。

> java -Djavax.net.ssl.keyStore=xxxx.pfx -Djavax.net.ssl.keyStorePassword=xxxx -Djavax.net.ssl.keyStoreType=PKCS12 -jar GGsync.jar .

実行例

下記がGaroonのスケジュール、実行結果、予定が反映されたGoogleカレンダーの例になります。

・Garoonのスケジュール

 

・連携プログラムの実行結果

 

・Googleカレンダー(プライベートな予定と並べて表示)

 

Garoonの予定の「メモ」、「コメント」はGoogleカレンダーの「説明」にまとめて登録します。

 

Garoonの予定が変更された場合は、Googleカレンダーの予定を削除してから再登録します。
下記が変更時の実行例になります。

 

Garoonの予定が削除された場合は、Googleカレンダーの予定を削除します。
下記が削除時の実行例になります。

定期実行

タスクスケジューラなどを利用することで、定期的にGaroonの予定をGoogleカレンダーに反映できます。
是非試してみてください。

連携プログラムの更新履歴

2015/3/30 繰り返し予定が正常に登録されない不具合を改修しました。
2015/4/24 終了時間未指定の予定がエラーになる不具合を改修しました。
2015/6/18 連携失敗時に詳細なエラーを出力するように修正しました。
2015/9/16 日本語文字のアカウント名に対応しました。
2016/1/14 Googleカレンダーに「参加者」を登録する機能を追加しました。
2016/3/24 ソースコードをGitHubに移しました。
2017/3/21 セキュアアクセス利用時の実行オプションを追記しました。
2017/9/21 ソースコードにライセンス表記を追加しました。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
竹内 能彦

ゆうき様

どこかのタイミングでOauth2認証が動作しなくなったのかもしれません。
p12keyでお試しいただけますでしょうか。

Avatar
ゆうき

竹内様

お世話になります。

すみません、google.oauth.p12keyのパス誤りでした。

正しいものに直したところ正常に同期がされました。

お手数をおかけいたしました。

Avatar
竹内 能彦

おー良かったです :D

Avatar
塚田

iPhoneのカレンダーと連携させて便利に利用しています。

Windows7 64bit JAVA jdk-8u171-windows-x64 では

連携できますが、 Windows7 32bit jdk-8u171-windows-i586を使うと

エラーになってします。考えれる原因はございますでしょうか?

INFO 2018/07/18 17:09:36(GGsync:main:83) The sync beginning with normal mode.
INFO 2018/07/18 17:09:40(GGsync:main:393) [ADD] Title:その他:
ERROR 2018/07/18 17:09:42(GGsync:main:449) Connection refused: connect
java.net.ConnectException: Connection refused: connect

 

Avatar
竹内 能彦

塚田さん

32bit版でも動作すると思うのですが確認はしていません。
恐れ入りますが、64bit版での利用をご検討ください。

Avatar
ゆうき

お世話になります。

2015年11月13日 16:52にRICK DOM様が同事象を記載しているのですが、

最近になって以下エラーにより連携処理が実行されません。

C:\GGsync>java -Djsse.enableSNIExtension=false -jar C:\GGsync\GGsync.jar C:\GGsync
INFO  08:53:20 The sync beginning with normal mode.
8 17, 2018 8:53:47 午前 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
情報: I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect
8 17, 2018 8:53:47 午前 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
情報: Retrying request
INFO  08:54:10 [DEL for deleted garoon schedule] GoogleId:*************
ERROR 08:54:12 410 Gone
{
  "code" : 410,
  "errors" : [ {
    "domain" : "global",
    "message" : "Resource has been deleted",
    "reason" : "deleted"
  } ],
  "message" : "Resource has been deleted"
}
com.google.api.client.googleapis.json.GoogleJsonResponseException: 410 Gone
{

過去ログを見る限り解決手法等が記載されていないと思うのですが、

解決方法等わかりましたら教えて頂けないでしょうか?

 

 

Avatar
竹内 能彦

ゆうきさん

連携したGoogleカレンダー側の予定が削除されていないでしょうか。

2016年3月にGoogleカレンダー側の予定が削除されていても
処理は継続するようにプログラムを変更しました。
GGsync.jarの更新(上書き)もご検討ください。

Avatar
ゆうき

竹内様

御返事ありがとうございます。

頂いたようにGGsync.jarを更新することで問題なく同期が実行されました。

ありがとうございます。

 

Avatar
mei

お世話になります。

設定していたところ、下記のようなエラーが出てしまいました。

原因がわかりましたら、教えていただけないでしょうか。

C:\Users\xxxxx>java -Dhttp.nonProxyHosts -Dhttps.proxyHost=xxxxx -Dhttps.proxyPort=xxxxx -jar C:/GGsync/GGsync.jar C:/GGsync
INFO 16:54:03 The sync beginning with normal mode.
INFO 16:54:14 [ADD] Title: xxxxxx
ERROR 16:54:15 accounts.google.com
java.net.UnknownHostException: accounts.google.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)

Avatar
竹内 能彦

meiさん

Garoonのスケジュール情報は取得できていますがGoogleカレンダーへの登録に失敗していそうですね。
以下が疑わしい点なのでご確認よろしくお願いします。
・エラー「UnknownHostException」
 => プロキシ設定、DNSに問題が無いかご確認ください。
・エラー「ERROR 16:54:15 accounts.google.com」
 => 設定ファイル「GGsync.properties」で指定する認証方式はP12KEYですよね。
    おそらくそうだと思いますが、P12KEYになっているか確認してください。

Avatar
T2

昨日PCを入れ替えました。一昨日まで問題なく使えていましたが、SYNCの設定を

バックアップし忘れたため、再設定しようとしております。

しかし、Googleカレンダーの設定画面が(最近?)変わったらしく、説明通りに

できません。

大変恐縮ですが、説明の内容を更新していただけないでしょうか?

もうこれがないと生きていけません。

 

Avatar
竹内 能彦

T2さん

記事の内容が古くなり申し訳ありません。
今は更新時間が取れないので、取り急ぎコメントで回答させていただきます。

本文記事の項目「2.Google APIの利用設定」がわからないということで合っていますでしょうか。
であれば、以下をお試しください。もし他の箇所でしたら教えてください。

 

下記にアクセス
https://console.developers.google.com/cloud-resource-manager

おそらく以前作成したプロジェクトが表示されるはずなので、「プロジェクト名」をクリック

左メニューから「サービスアカウント」をクリック

上部の「+サービスアカウントを作成」をクリック

「サービスアカウント名」、「サービスアカウントの説明」に適当な内容を入力し、「作成」をクリック

役割は選択せずに「続行」をクリック

「+キーを作成」をクリック、「P12」を選択し「作成」をクリック、閉じるをクリック
※ここでダウンロードされたファイルが記事本文の秘密鍵

完了をクリック
※ここで表示されたメール(形式はxxxx@xxxxx.iam.gserviceaccount.com)が記事本文のサービスアカウントID

 

あとGGsync.dbも消えてしまった場合はカレンダーを新しく用意する必要があります。
(連携済みの情報がないので、連携済みの予定が重複登録されます)

Avatar
T2

竹内様

 ありがとうございます。闘って何とか復活しました。

T2により編集されました
Avatar
竹内 能彦

良かったです。(時間がかかったようで案内に誤りがあったのかもしれません。申し訳ないです)

Avatar
tomomo85

こんにちは、

こちら手順どおりに実装したところ、正しく連携することができました。

素晴らしい記事をありがとうございます。

一点、質問です。

4.連携プログラムの設定

設定ファイルの編集方法について説明している箇所で、

唐突に「Googleカレンダーに登録する予定の色」についての解説がありますが、

カラーIDは「GGsync.properties」の中で設定するのでしょうか?

数値を指定する項目がありません。

Avatar
竹内 能彦

tomomo85さん

設定ファイルから設定項目が抜けていました。申し訳ありません。

GGsync.propertiesに下記を追加してください。
「5」や「7」の数字はお好きな数字に変更してください。

# グーグルカレンダーに登録する通常予定の色
google.calendar.normal.color=5
# グーグルカレンダーに登録する期間予定の色
google.calendar.banner.color=7

メモ)本文のファイルにも追記済みです。

Avatar
tomomo85

竹内 能彦さん

予定に色が反映されるのを確認しました、回答・対応ありがとうございました。

お礼に、他の方の参考までに色名メモ置いときます。

# グーグルカレンダーに登録する予定の色
# 1: #A4BDFC PaleBlue ラベンダー
# 2: #7AE7BF PaleGreen セージ
# 3: #DBADFF Mauve ブドウ
# 4: #FF887C PaleRed フラミンゴ
# 5: #FBD75B Yellow バナナ
# 6: #FFB878 Orange ミカン
# 7: #46D6DB Cyan ピーコック
# 8: #E1E1E1 Gray グラファイト
# 9: #5484ED Blue ブルーベリー(カレンダーの色)
# 10: #51B749 Green バジル
# 11: #DC2127 Red トマト
Avatar
竹内 能彦

tomomo85 さん

良かったです!
カラーコード情報ありがとうございますm(_ _)m
本文に追記しました。

Avatar
DK

このようなエラーが出るのですが、お力添えいただけませんでしょうか?

弊社環境はBasic認証が設定されており、そのせいではと思っております。

 

```

➜ ggsync java -jar GGsync.jar .
INFO 17:05:48 The sync beginning with normal mode.
12 04, 2018 5:06:49 午後 org.apache.axis2.transport.http.HTTPSender sendViaPost
情報: Unable to sendViaPost to url[http://xxx/cgi-bin/cbgrn/grn.cgi/cbpapi/base/api]
org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 60000 ms
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:155)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:396)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:223)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at com.cybozu.garoon3.common.CBServiceClient.sendReceive(CBServiceClient.java:178)
at com.cybozu.GGsync.main(GGsync.java:168)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
... 19 more

ERROR 17:06:49 The host did not accept the connection within timeout of 60000 ms
org.apache.axis2.AxisFault: The host did not accept the connection within timeout of 60000 ms

```

Avatar
竹内 能彦

DKさん

Basic認証はできれば追加したいと思っていますが、Basic認証がエラーではない可能性があるので念のため確認させてください。
・利用中のガルーンはオンプレガルーン(クラウドではない)でしょうか。接続先が以下のためオンプレだと考えています。
 > http://xxx/cgi-bin/cbgrn/grn.cgi

・(上記が正しい=オンプレの場合)
 Webサーバーの設定を変更してBasic認証を設定しているということで合っていますか。


タイムアウトエラーになっていることからBasic認証エラーではなく、URLの記載ミスも可能性がありそうです。

Avatar
Adam Kendall

ガルーンで全社員が作成するイベントをGoogleに同期して、そこからZoom Roomsのスケジュールに同期したいと思っています。

 

GGsyncを使って正常に個人のスケジュールをGoogleカレンダーに同期することは出来ましたが、

個人のスケジュールだけではなくて、施設が登録されているイベントを全部同期することって可能でしょうか?

Avatar
竹内 能彦

Adam Kendall さん

今のGGsyncではできません。
SOAP API、REST APIともに施設のスケジュールは取得できるので
GitHubに公開しているソースを修正できれば可能です。

SOAP API
https://developer.cybozu.io/hc/ja/articles/202463180#step4

REST API
https://developer.cybozu.io/hc/ja/articles/360000440583#step2

Avatar
Adam Kendall

竹内さん、

 

ありがとうございます!出来ました。

 

Githubでフォークして、以下のREADME.MDでやり方をまとめました(英語):

https://github.com/adamkendall1/garoon-google-zoom-rooms

 

すごく適当で、効率の悪い方法ですが、ガルーンにある施設のスケジュールが全部Zoom Roomsのスケジュールにちゃんと同期されます。

もし同じことがしたい方がいたらどうぞご覧ください。

 

GGsyncをGithubにオープンソースで公開してくれてありがとうございます!助かりました。

Avatar
竹内 能彦

おおお!さすがです。すごい!

Avatar
DK

竹内さん

以下の件、ありがとうございました

>Basic認証はできれば追加したいと思っていますが、Basic認証がエラーではない可能性があるので念のため確認させてください。
>・利用中のガルーンはオンプレガルーン(クラウドではない)でしょうか。接続先が以下のためオンプレだと考えています。
> > http://xxx/cgi-bin/cbgrn/grn.cgi

>・(上記が正しい=オンプレの場合)
> Webサーバーの設定を変更してBasic認証を設定しているということで合っていますか。

 

久しぶりに挑戦しました。

httpをhttpsにしたら実行できました。(https://xxx/cgi-bin/cbgrn/grn.cgi)

ありがとうございました!

 

改めてご質問させてください。

やはり社内ネットワークから出ると、Basic認証でエラーとなるようです。

普段社外からGaroonを見るときにはBasic認証を使っています。

 

こちら軽く調べてみたのですが、REST APIへの書き換えが必要なのでしょうか?

DKにより編集されました
Avatar
竹内 能彦

DKさん

動作したのですね。良かったです。

> こちら軽く調べてみたのですが、REST APIへの書き換えが必要なのでしょうか?
REST APIへの書き換えは必要ありません。
ガルーンへのリクエストにBASIC認証の認証情報を付与する改修が必要になります。

恐れ入りますが現時点では改修時期をお約束できないです。
そのため社内からご利用いただければと思います。すいません。

Avatar
夏 龍

竹内さん:

お世話になります。

GGsyncを見つけて試してみました。

でも、使う時はエラーになりました。

INFO 2019/05/06 09:23:59(GGsync:main:83) The sync beginning with normal mode.
ERROR 2019/05/06 09:24:03(GGsync:main:449) Transport error: 301 Error: Moved Permanently
org.apache.axis2.AxisFault: Transport error: 301 Error: Moved Permanently
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:194)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:396)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:223)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at com.cybozu.garoon3.common.CBServiceClient.sendReceive(CBServiceClient.java:178)
at com.cybozu.GGsync.main(GGsync.java:168)

設定の時は何か間違いところがありますか?

正しい方法を私に教えてもらいませんか。

よろしくおねがいします。

Avatar
竹内 能彦

夏 龍さん

garoon.urlのhttp://、https://はあっていますか?
エラーの内容からGaroonのURL設定値に誤りがある可能性が高そうです。

Avatar
夏 龍

竹内さん

お世話になっております。

エラーの解決方法を私に教えてもらいました、ありがとうございました。

Garoon.urlの設定は正しいに変更しました。

でも、新しいエラーが発生しました。

INFO 2019/05/10 18:19:38(GGsync:main:83) The sync beginning with normal mode.
INFO 2019/05/10 18:19:43(GGsync:main:393) [ADD] Title:出張
ERROR 2019/05/10 18:20:03(GGsync:main:449) connect timed out
java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:77)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)
at com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:283)
at com.google.api.client.auth.oauth2.TokenRequest.execute(TokenRequest.java:307)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.executeRefreshToken(GoogleCredential.java:384)
at com.google.api.client.auth.oauth2.Credential.refreshToken(Credential.java:489)
at com.google.api.client.auth.oauth2.Credential.intercept(Credential.java:217)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
at com.cybozu.GoogleCalendar.addSchedule(GoogleCalendar.java:81)
at com.cybozu.GGsync.main(GGsync.java:405)

 

 

Avatar
竹内 能彦

夏 龍さん

Googleへの接続がタイムアウトしていますね。
こちらはネットワークに問題がありそうです。
プロキシを通る場合は本文の「プロキシ経由の実行」を参考にしてください。

※Garoonがhttpsの場合でGoogle接続のみプロキシ経由となる場合は接続できないかもしれません
 Googleをプロキシ経由にするとGaroonもプロキシ経由となるため

ログインしてコメントを残してください。