@satsuki_0515s (satsuki shin)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Facebook広告とスプレッドシートの自動化を行いたい

Facebook広告とスプレッドシートの自動化を行いたい

以下の記事の通り、実行した
https://note.com/bets_inc/n/na4851f1f701b

GASの実行の際、エラーが出てしますので、解決方法を教えて下さい。

発生している問題・エラー

Exception: Request failed for https://graph.facebook.com returned code 400. Truncated server response: {"error":{"message":"Unsupported post request. Object with ID 'undefined' does not exist, cannot be loaded due to missing permissions, or does not ... (use muteHttpExceptions option to examine full response)
getReportByHttpRequest  @ コード.gs:18

スクリーンショット 2021-04-19 19.22.14.png

自分で試したこと

https://developers.facebook.com/docs/graph-api/changelog/versions
バージョンが違うんだと思い、
https://graph.facebook.com/v2.8/

https://graph.facebook.com/v10.0/

に変更したが同じ結果になってしまいました。
GASの仕組みなどあまりわかっていない素人なのですが、助言等いただけますと幸いです。

0 likes

4Answer

@hase820さん、確認ありがとうございます。
アクセストークンなどに問題があると思っていましたが、データが帰ってきていますね…:sweat:
下記コマンドも試していただけますでしょうか?
一応POSTで送るパラメーターなどもGASのプログラムと同じにしています。

curl -X POST \
-d 'time_range={"since":"2021-07-07","until":"2021-07-07"}' \
-d "fields=spend,impressions,unique_clicks,ctr,cpc" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<AD_OBJECT_ID>/insights"

うまくいかない場合、POSTではなくGETにしてみたりcurl -G \
GETでもうまくいかない場合は渡すパラメーターが間違っているはずなので、
-d 'time_range={"since":"2021-07-07","until":"2021-07-07"}' \
-d "fields=spend,impressions,unique_clicks,ctr,cpc" \を消して試してみてください。

1Like

Object with ID 'undefined' does not exist, cannot be loaded due to missing permissions, or does not ... (use muteHttpExceptions option to examine full response)
と書いてあるので何かのIDが違うと思いました。

ソースコードに↓が書いてありますが、ここは書き換えていますでしょうか?

function kpiFunction() {
 // キャンペーンID
 var CAMPAIGN_ID = "ここにキャンペーンIDを入力";
0Like

Comments

  1. @satsuki_0515s

    Questioner

    ご返信ありがとうございます!!
    ソースコードで書き換えたのは上記含め二箇所のみ行いました!

    1.""のなかにアクセストークンを入れた

    // アクセストークン
    var ACCESS_TOKEN = "";

    2.""のなかにキャンペーンIDを入れた

    function kpiFunction() {
    // キャンペーンID
    var CAMPAIGN_ID = "ここにキャンペーンIDを入力";
  2. returned code 400と書いてあり、
    これはFacebookAPIのエラーなので、とりあえずGASの問題ではありません。
    https://developer.mozilla.org/ja/docs/Web/HTTP/Status/400

    `UrlFetchApp.fetch("https://graph.facebook.com/v2.8/" + campaign_id + "/insights", options)`
    ここに書かれているリクエストURLが間違っていると思います。
    入れている値(campaign_id, options)に間違いがあるか、
    「キャンペーンID」、「Facebookアクセストークン」そのものに問題がある事も考えられます。

    cmd.exeでcurlを実行して確認してみてください。

    ```
    curl -G \
    -d "level=ad" \
    -d "fields=impressions,ad_id" \
    -d "access_token=<ACCESS_TOKEN>" \
    "https://graph.facebook.com/<API_VERSION>/<CAMPAIGN_ID>/insights"
    ```

    <API_VERSION> = v1.0 ~ v10.0
    <CAMPAIGN_ID> = 取得したキャンペーンID
    <ACCESS_TOKEN> = 取得したアクセストークン

    同じく400でエラーが出るようであればキャンペーンIDやアクセストークンを取得しなおしてみるとよいと思います。

私も質問主の方と同じ事象が起きました。(エラーコード400も同様です)
@aikawa_YO 様にご回答いただいたとおり、下記を実行したところ正常にレスポンスがありました。
解決方法がわかる方がいらっしゃいましたら、ご教示いただけると幸いでございます。(追加で必要な情報ございましたらご指摘ください)

▼実行コード

curl -G \
-d "level=ad" \
-d "fields=impressions,ad_id" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<CAMPAIGN_ID>/insights"

▼レスポンス
"https://graph.facebook.com/v11.0/******/insights"
{"data":[{"impressions":"17847","ad_id":"","date_start":"2021-06-08","date_stop":"2021-07-07"},{"impressions":"28822","ad_id":"","date_start":"2021-06-08","date_stop":"2021-07-07"},{"impressions":"4373","ad_id":"","date_start":"2021-06-08","date_stop":"2021-07-07"},{"impressions":"6808","ad_id":"","date_start":"2021-06-08","date_stop":"2021-07-07"}],"paging":{"cursors":{"before":"","after":""}}}%

0Like

@aikawa_YO さん、再度ご回答いただき有難うございます!
お送りいただいた下記コマンドとレスポンスを記載します。
結論、GET・POSTいずれのコマンドでも正常にレスポンスがありました。
そこで改めて元のGASを実行したところ、別のエラーが返ってきており質問した認証エラーは解消されたようです。ご回答有難うございました!

▼実行コマンド①

curl -X POST \
-d 'time_range={"since":"2021-07-07","until":"2021-07-07"}' \
-d "fields=spend,impressions,unique_clicks,ctr,cpc" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<AD_OBJECT_ID>/insights"

▼レスポンス①

{"report_run_id":"******"}%   

▼実行コマンド②

curl -G \
-d 'time_range={"since":"2021-07-07","until":"2021-07-07"}' \
-d "fields=spend,impressions,unique_clicks,ctr,cpc" \
-d "access_token=<ACCESS_TOKEN>" \
"https://graph.facebook.com/<API_VERSION>/<AD_OBJECT_ID>/insights"

▼レスポンス②

{"data":[{"spend":"******","impressions":"6047","unique_clicks":"64","ctr":"1.107987","cpc":"55.537313","date_start":"2021-07-07","date_stop":"2021-07-07"}],"paging":{"cursors":{"before":"******","after":"******"}}}%  

▼GAS実行結果
スクリーンショット 2021-07-09 15.53.11.png

0Like

Your answer might help someone💌