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

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

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

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

Q&A

解決済

1回答

732閲覧

Google Apps ScriptのUrlFetchApp.fetchを使用すると「Exception: Invalid argument:」エラーが発生してしまう

hoshino1989

総合スコア2

Google Apps Script

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

0グッド

0クリップ

投稿2023/02/22 03:24

実現したいこと

GASについての質問です。
FacebookAPIを使用して日別の広告レポートを取得するスクリプトを組もうと考えているのですが、
URLを指定してUrlFetchApp.fetchを実行すると取得エラーが発生し正常に動作せず。
「time_range」を記載しないと取得できることは確認できたのですが、日付範囲指定はしたく。
色々調べたのですが原因が全く分からず、ご助言いただけると幸いです。

前提

・FacebookAPIアクセストークンは期限内

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

Exception: Invalid argument: https://graph.facebook.com/v16.0/act_[広告アカウントID]/insights?access_token=[アクセストークン]&time_range={since:'2023-02-21',until:'2023-02-21'}&fields=impressions,clicks,spend

該当のソースコード

JavaScript

1function getYesterdayAdStats() { 2 var accessToken = 'アクセストークン'; 3 var accountId = '広告アカウントID'; 4 var today = new Date(); 5 var yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000); 6 var today = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd'); 7 var yesterday = Utilities.formatDate(yesterday, 'JST', 'yyyy-MM-dd'); 8 9 var url = 'https://graph.facebook.com/v16.0/act_' + accountId + '/insights?access_token=' + accessToken + 10 '&time_range={"since":"' + yesterday + 11 '","until":"' + yesterday + '"}' + 12 '&fields=impressions,clicks,spend'; 13 14 console.info(url); 15 var response = UrlFetchApp.fetch(url); 16 var data = JSON.parse(response.getContentText()); 17 console.info(data); 18}

試したこと

・「time_range」を消すと動作する
・ブラウザにてtime_rangeを含むURLを叩くと正常に取得できる

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

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

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

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

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

guest

回答1

0

ベストアンサー

time_range の中にいくつかエスケープする必要のある文字が入ってます。encodeURIComponent() などでエスケープしましょう。

js

1 '&time_range=' + 2 encodeURIComponent(`{"since":"${yesterday}","until":"${yesterday}"}`) + 3 '&fields=impressions,clicks,spend';

投稿2023/02/22 05:10

int32_t

総合スコア21929

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

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

hoshino1989

2023/02/22 05:22

ご回答ありがとうございます! 上記にて正常に動作確認できました。 エンコードが必要だったのですね、、! 教えていただきありがとうございました。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問