質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

0回答

424閲覧

フォーム送信時にJavaEEとGCP(GoogleCalendar API)を連携させたい

hiiro46

総合スコア21

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/03/14 03:46

目的

ユーザーがフォーム(面談予約や日程登録など)で送信した段階でGoogleCalendarに
日時が設定されるコードを作りたい。


下記コードをご覧ください。

CalendarAlignment.java

Java

1package googleCalendar; 2 3import java.io.FileInputStream; 4import java.io.IOException; 5import java.security.GeneralSecurityException; 6import java.util.Collections; 7 8import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; 9import com.google.api.client.http.javanet.NetHttpTransport; 10import com.google.api.client.json.gson.GsonFactory; 11import com.google.api.client.util.DateTime; 12import com.google.api.services.calendar.Calendar; 13import com.google.api.services.calendar.CalendarScopes; 14import com.google.api.services.calendar.model.Event; 15import com.google.api.services.calendar.model.EventDateTime; 16import com.google.auth.Credentials; 17import com.google.auth.appengine.AppEngineCredentials; 18import com.google.auth.http.HttpCredentialsAdapter; 19 20public class CalendarAlignment { 21 22 private String date; 23 private String time; 24 private String detail; 25 26 public CalendarAlignment(String date,String time,String detail) { 27 this.date = date; 28 this.time = time; 29 this.detail = detail; 30 } 31 32 public void calendar() throws IOException,GeneralSecurityException{ 33 final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); 34 Credentials credentials = AppEngineCredentials.fromStream(new FileInputStream("C:/GoogleCloudPlatform/superb-joy-342901-9a12b53f05c2.json")) 35 .createScoped(Collections.singleton(CalendarScopes.CALENDAR_EVENTS)); 36 Calendar service = new Calendar.Builder(HTTP_TRANSPORT,GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) 37 .setApplicationName("Calendar") 38 .build(); 39 40 StringBuilder dataString = new StringBuilder(); 41 dataString.append(this.date); 42 dataString.append("T"); 43 dataString.append(this.time); 44 dataString.append(":00.000+09:00"); 45 46 EventDateTime startDataTime = new EventDateTime().setDateTime(new DateTime(dataString.toString())); 47 EventDateTime endDataTime = new EventDateTime().setDateTime(new DateTime(dataString.toString())); 48 49 String detail = this.detail; 50 Event event = new Event() 51 .setDescription(detail) 52 .setStart(startDataTime) 53 .setEnd(endDataTime); 54 55 event = service.events().insert("flnd90ighkv4ef5vp57rugmcbc@group.calendar.google.com", event).execute(); 56 } 57}

CalendarController.java

Java

1package googleCalendar; 2 3import java.io.IOException; 4import java.security.GeneralSecurityException; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12/** 13 * Servlet implementation class GoogleCalendarController 14 */ 15@WebServlet("/CalendarController") 16public class CalendarController extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 /** 20 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 21 */ 22 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/index.jsp"); 24 dispatcher.forward(request, response); 25 26 } 27 28 /** 29 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 30 */ 31 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 request.setCharacterEncoding("UTF-8"); 33 String date = request.getParameter("date"); 34 String time = request.getParameter("time"); 35 String detail = request.getParameter("detail"); 36 37 UserData userData = new UserData(date,time,detail); 38 CalendarAlignment alignment = new CalendarAlignment(userData.getDate(),userData.getTime(),userData.getDetail()); 39 40 try { 41 alignment.calendar(); 42 } catch (IOException | GeneralSecurityException e) { 43 // TODO 自動生成された catch ブロック 44 e.printStackTrace(); 45 } 46 47 } 48 49}

UserData.java

Java

1package googleCalendar; 2 3public class UserData { 4 private String date; 5 private String time; 6 private String detail; 7 8 public UserData() {} 9 10 public UserData(String date,String time,String detail) { 11 this.date = date; 12 this.time = time; 13 this.detail = detail; 14 } 15 16 public String getDate() { 17 return this.date; 18 } 19 public String getTime() { 20 return this.time; 21 } 22 public String getDetail() { 23 return this.detail; 24 } 25} 26

全対象を大まかに説明すると、jspで入力したパラメーターをPostで受け取り、UserDataの引数に設定。
CalendarAlignmentの引数では、userDataからgetを用いてデータを取得。
CalendarAlignmentにて、パラメーターをフィールドに代入しています。
フィールドを各セットして、CalendarControllerでcalendarメソッドを呼び出しました。

結果的にGoogleCalendarを確認すると値が設定されていました。
しかし疑問に感じていることが一つあります。

疑問点

・本来insertの引数に設定してあるカレンダーidはユーザーによって変わります。
私の場合、下記カレンダーidでしたが個々のカレンダーによってidは異なる。

Java

1event = service.events().insert("flnd90ighkv4ef5vp57rugmcbc@group.calendar.google.com", event).execute();

知りたいこと

・カレンダーidが不明でもGoogleCalendarに日時を登録できるのか。
カレンダーidが必要な場合はどのような方法で他人のカレンダーidを取得するのか?
・OAuth2.0を用いれば、個々のユーザーのGoogleCalendarに日時を登録できるのか。
(参考資料など何個かあれば嬉しいです)

※補足
その他、何かコードでおかしな点があれば教えていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問