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

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

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

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

4059閲覧

[GAS] Google Apps ScriptのTimetree APIの使用について

k_i

総合スコア23

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2020/06/29 06:37

GASのTimetree APIの連携がうまくいかない

現在、Timetreeとの連携をGASで行おうと考えており、登録機能を実現したいです。
timeTreePOST関数を実行するとurl,method,payloadの値にしたがって日付を登録したいのですが、UrlFetchApp.fetch()でエラーが出てしまいます。

エラーの内容としては
JSON parse errorなので、日付の箇所が間違っているのか、データの送信がJSONになっていないのかで目星はつけているのですが、うまく動作しません。

わかる方いらしたらお力添えお願いします。

function timeTreePOST(){ var calender_id = PropertiesService.getScriptProperties().getProperty('timetree_calender1'); var url = 'https://timetreeapis.com/calendars/' + calender_id + '/events'; var method = 'POST'; var payload = { 'data': { 'attributes': { 'title': 'テスト', 'category': 'schedule', 'all_day': false, 'start_at': Utilities.formatDate(new Date("2020-6-20 17:00"), 'Asia/Tokyo', "yyyy-MM-dd'T'HH:mm:ss'+09:00'"), 'start_timezone': 'UTC', 'end_at': Utilities.formatDate(new Date("2020-6-20 19:00"), 'Asia/Tokyo', "yyyy-MM-dd'T'HH:mm:ss'+09:00'"), 'end_timezone': 'UTC' }, 'relationships': { 'label': { 'data': { 'id': PropertiesService.getScriptProperties().getProperty('timetree_calender1_label'), 'type': 'label' } } } } }; timeTreeAPI(url, method, payload); } function timeTreeAPI(url, method, payload){ var accessToken = PropertiesService.getScriptProperties().getProperty('timetree_personal_access_token'); var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer '+ accessToken, 'Accept': 'application/vnd.timetree.v1+json' }; var options = { 'method': method, 'headers': headers, 'payload': payload }; var res = UrlFetchApp.fetch(url, options); Logger.log(res); }

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

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

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

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

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

papinianus

2020/06/29 07:31 編集

Logger.log 表示された内容そのものを書いてください。「JSON parse error」という抜粋ではなく。 ついでに options も Logger.log して追記していただけると助かります。(トークンは伏せ字にしてください)
guest

回答1

0

ベストアンサー

TimeTree の API はよく知らないのですが、サンプルコードを見る限り payload は JSON.strigify する必要がありそうです。

https://developers.timetreeapp.com/ja/docs/api#curl-example-7

GoogleAppsScript

1 var options = { 2 'method': method, 3 'headers': headers, 4 'payload': JSON.strigify(payload) 5 };

投稿2020/06/29 07:26

draq

総合スコア2577

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

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

k_i

2020/06/30 07:40

どうやらpayloadの部分がJSON形式となっておらずエラーが出ていたようでした! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問