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

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

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

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google Cloud Platform

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Google カレンダー

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

解決済

[Rails]GoogleカレンダーAPIを用いて添付ファイルの添付ができない

kirisaki_aoi
kirisaki_aoi

総合スコア21

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google Cloud Platform

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Google カレンダー

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

1回答

0評価

0クリップ

200閲覧

投稿2022/06/06 13:32

お世話になります。
現在Ruby on RailsにてGoogleカレンダーに添付ファイルを添付した予定表の新規作成を実装しているのですが、添付ファイルの添付がうまくいかない状態です。

前提
・タイトル/説明文のみで予定表を新規作成するところまでは実装済み。
・ファイルの添付作業のみ出来ていない状態

使用gemなど

Ruby

gem 'google_drive' gem 'googleauth' gem 'google-api-client' gem 'google-apis-calendar_v3' require "google_drive" require 'googleauth' require 'googleauth/stores/file_token_store' require 'google/api_client/client_secrets'

Ruby

service = Google::Apis::CalendarV3::CalendarService.new service.authorization = secrets.to_authorization # 登録するイベント内容 detail = { summary: "予定表のタイトル", description: "予定表の説明です", location: "仮", start: { date_time: Time.now.iso8601, }, end: { date_time: Time.now.iso8601, }, "attachments": [ "fileUrl": [GoogleDriveにある写真の共有リンク], "title": "画像タイトル", "mimeType": "image/jpeg", ], } event = Google::Apis::CalendarV3::Event.new(detail) service.insert_event([カレンダーID], event)

Log

Sending HTTP post https://www.googleapis.com/calendar/v3/calendars/[カレンダーID]%40gmail.com/events? 200 #<HTTP::Message:0x00007f995b2497c0 @http_header=#<HTTP::Message::Headers:0x00007f995b249798 @http_version="1.1", @body_size=0, @chunked=false, @request_method="POST", @created=Mon, 06 Jun 2022 13:16:55 +0000, @creator= #<Google::Apis::CalendarV3::Event::Creator:0x00007f995e8af300 @email=[メールアドレス], @self=true>, @description="予定表の説明です", @end= #<Google::Apis::CalendarV3::EventDateTime:0x00007f995e8ad0a0 @date_time=Mon, 06 Jun 2022 22:16:54 +0900, @time_zone="Asia/Tokyo">, @etag="\"3309042830986000\"", @event_type="default", @html_link= "https://www.google.com/calendar/event?eid=bnN1cGRjMjRkbnNxMGQ0c2JvdmowM3M1NzQga2lyaXNha2kuYW9pMzE1QG0", @i_cal_uid="nsupdc24dnsq0d4sbovj03s574@google.com", @id="nsupdc24dnsq0d4sbovj03s574", @kind="calendar#event", @location="仮", @organizer= #<Google::Apis::CalendarV3::Event::Organizer:0x00007f995e8bdfb8 @email=[メールアドレス], @self=true>, @reminders= #<Google::Apis::CalendarV3::Event::Reminders:0x00007f995e8c6a00 @use_default=true>, @sequence=0, @start= #<Google::Apis::CalendarV3::EventDateTime:0x00007f995e8c4980 @date_time=Mon, 06 Jun 2022 22:16:54 +0900, @time_zone="Asia/Tokyo">, @status="confirmed", @summary="予定表のタイトル", @updated=Mon, 06 Jun 2022 13:16:55 +0000>

こちらのコードを実行すると、エラーなどは表示されませんがカレンダーを確認した際添付ファイルが何もついていない状態となります。
(タイトル・説明文の入力内容で予定表自体の作成に成功していることは確認しています)
また、ログを見ている限りattachmentsのパラメータが載っていないことが気になっております…。

その他、調べた結果として「supports_attachments=trueのパラメータが必要」という記述を確認いたしましたので、最後の実行コードを以下のように書き換えたところこちらはエラーが表示されました。

Ruby

service.insert_event([カレンダーID], event, supports_attachments: true)

Log

Sending HTTP post https://www.googleapis.com/calendar/v3/calendars/[カレンダーID]%40gmail.com/events?supportsAttachments=true 400 Caught error required: Missing attachment URL. Error - #<Google::Apis::ClientError: required: Missing attachment URL. status_code: 400 header: #<HTTP::Message::Headers:0x00007f995b089c00 @http_version="1.1", @body_size=0, @chunked=false, @request_method="POST"…

1つ目の方法で添付ファイルがうまく添付できない理由または2つ目の方法でエラーをどう修正すべきか検討がつかず、ご教示いただきたいと考えております…。

よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google+

Google+とは、Googleが提供するソーシャル・ネットワーキング・サービスです。情報を共有するユーザーの範囲を設定する「サークル」、Webカメラで複数名の相手と無料でビデオチャットできる「ハングアウト」などの機能があります。

Google Cloud Platform

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

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Google カレンダー

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