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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2229閲覧

GASを利用しTimeTreeの予定を取得したい

rsr0421

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/09/24 12:49

前提・実現したいこと

GASを利用しTimeTreeの予定を取得しスプレッドシートに記録したい

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

gas

1function getSchedule() { 2 var timeURL = "https://timetreeapis.com/calendars/(calendar_id)/upcoming_events?timezone=Asia/Tokyo&days=7&include=creator,label,attendees" //カレンダーリスト取得 3 var token = $ACCESS_TOKEN 4 var ss = SpreadsheetApp.getActiveSpreadsheet() 5 const sheet = ss.getSheetByName("記録するシート名") 6 var headers = { 7 "Accept": "application/vnd.timetree.v1+json", 8 "Authorization": "Bearer " + token 9 } 10 var options = { 11 "method": "get", 12 "headers": headers 13 }; 14 var request = UrlFetchApp.fetch(timeURL, options); 15 var json = JSON.parse(request); 16 sheet.appendRow([new Date(), json["title"], json["start_at"]]) 17} 18

試したこと

console.log(json);で確認したところ
attributesとrelationshipsの中身が [Object]となり、値が取得できていない
{ id: 'ID',
type: 'event',
attributes: [Object],
relationships: [Object] },

Postmanを利用し確認した際は、日時や名称が取得できていました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1 var request = UrlFetchApp.fetch(timeURL, options); 2 var json = JSON.parse(request); 3// 以下修正 4 for (var i = 0; i < json["data"].length; i++) { 5 var data = json["data"][i]; 6 sheet.appendRow([new Date(), data["attributes"]["title"], data["attributes"]["start_at"]]); 7 }

とした場合いかがでしょうか。

より簡潔に書くなら

js

1 var request = UrlFetchApp.fetch(timeURL, options); 2 var json = JSON.parse(request); 3 4 json.data.forEach(data => { 5 sheet.appendRow([new Date(), data.attributes.title, data.attributes.start_at]) 6 });

投稿2021/09/24 13:17

編集2021/09/24 14:33
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

rsr0421

2021/09/24 13:41

ご回答ありがとうございます。 いただいた値へ変更してみたところ下記のエラーが表示となりました。 「TypeError: Cannot read property 'title' of undefined」
退会済みユーザー

退会済みユーザー

2021/09/24 14:33

修正しました。
rsr0421

2021/09/27 10:20

ありがとうございます。 修正いただいた内容で試してみたところ無事取得ができました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問