Конвертировать запрос API API Facebook в Javascript для функции ImportJSON в Google Sheets - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь перенести некоторые данные API Facebook Ad Insights в Google Sheets с помощью ImportJSON Google Apps Script от Брэда Джаспера . Я пытаюсь сделать все возможное, чтобы преобразовать параметры запроса cURL в пригодную для использования переменную JavaScript как «fetchOptions», используя пары ключ / значение для параметров и токена доступа. Так как они помечены для -d / - данных для cURL, я попытался добавить их как «полезную нагрузку», но поскольку Facebook требует метод GET вместо POST, он не будет читать полезную нагрузку. Поэтому, пока скрипт «работает», он извлекает идентификатор отчета о выполнении, поскольку использует запрос POST вместо запроса GET для фактического извлечения данных, которые я хочу получить.

Вот пример запроса cURL:

curl -G \
-d "date_preset=last_7_days" \
-d "access_token=howdy" \
"https://graph.facebook.com/v3.2/1234567890/insights"

Вот что у меня есть в функции ImportJSON Google Script, которую я пытаюсь использовать:

function ImportJSONAdvanced(url, fetchOptions, query, parseOptions, includeFunc, transformFunc) {
  var fetchOptions = {"method": "GET", payload: {"access_token" : "howdy", "date_preset" : "last_7_days"}};
  var jsondata = UrlFetchApp.fetch(url, fetchOptions);
  var object   = JSON.parse(jsondata.getContentText());

  return parseJSONObject_(object, query, parseOptions, includeFunc, transformFunc);
}

Обратите внимание, что сам URL передается в качестве параметра на уровне ячеек листа при использовании функции.

Любая помощь в этом вопросе очень ценится. Спасибо!

1 Ответ

1 голос
/ 27 апреля 2019
  • Вы уже подтвердили, что ваша команда curl работает нормально.
  • Вы хотите преобразовать следующую команду curl в скрипт Google Apps.

    curl -G \
    -d "date_preset=last_7_days" \
    -d "access_token=howdy" \
    "https://graph.facebook.com/v3.2/1234567890/insights"
    

Если мое понимание верно, как насчет этой модификации?

Точки модификации:

  • Когда команда curl выполняется с -G и -d "date_preset=last_7_days" -d "access_token=howdy", эти клавишии значения запрашиваются в качестве параметров запроса.Поэтому, когда эта команда преобразуется в Google Apps Script, эти ключи и значения необходимо преобразовать в параметры запроса.
  • До недавнего времени в UrlFetchApp, когда payload запрашивался как метод GET, я подтвердилчто значения payload были использованы в качестве параметров запроса.Но теперь я подтвердил, что даже когда payload запрашивается как метод GET с использованием method: "GET", он запрашивается как метод POST.Я не уверен, что это временная ситуация.Но я подумал, что причина ошибки может заключаться в следующем.

Когда вышеуказанные точки модификации отражаются в вашем скрипте, это становится следующим:

Модифицированный скрипт:

Пожалуйста, измените его следующим образом и запустите снова.

С:
var fetchOptions = {"method": "GET", payload: {"access_token" : "howdy", "date_preset" : "last_7_days"}};
var jsondata = UrlFetchApp.fetch(url, fetchOptions);
Кому:
var jsondata = UrlFetchApp.fetch(url + "?access_token=howdy&date_preset=last_7_days");

Примечание:

  • Этот измененный сценарий аналогичен команде curl.Но если ошибка происходит, пожалуйста, подтвердите URL, токен доступа и другие параметры, снова.По поводу этих параметров я не уверен насчет правильных значений.Я приношу извинения за эту ситуацию.

Ссылка:

Если я неправильно понял ваш вопрос ирезультат был не то, что вы хотите, я извиняюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...