将Facebook API Curl请求转换为Google表单中ImportJSON函数的Javascript

将Facebook API Curl请求转换为Google表单中ImportJSON函数的Javascript,javascript,json,curl,google-apps-script,Javascript,Json,Curl,Google Apps Script,我正在尝试使用这个工具将一些Facebook广告洞察API数据拉到谷歌的表单中。我正在尝试尽我所能将cURL请求选项转换为一个可用的JavaScript变量,作为“fetchOptions”,使用参数和访问令牌的键/值对。因为它们被标记为cURL的-d/--data,所以我尝试将它们添加为“有效负载”,但是因为Facebook需要一个GET方法而不是POST,所以它不会读取有效负载。因此,当脚本“工作”时,它会拉取运行报告ID,因为它使用POST请求而不是GET请求来实际获取我想要检索的数据 下

我正在尝试使用这个工具将一些Facebook广告洞察API数据拉到谷歌的表单中。我正在尝试尽我所能将cURL请求选项转换为一个可用的JavaScript变量,作为“fetchOptions”,使用参数和访问令牌的键/值对。因为它们被标记为cURL的-d/--data,所以我尝试将它们添加为“有效负载”,但是因为Facebook需要一个GET方法而不是POST,所以它不会读取有效负载。因此,当脚本“工作”时,它会拉取运行报告ID,因为它使用POST请求而不是GET请求来实际获取我想要检索的数据

下面是cURL请求的示例:

curl -G \
-d "date_preset=last_7_days" \
-d "access_token=howdy" \
"https://graph.facebook.com/v3.2/1234567890/insights"
以下是我目前尝试使用的ImportJSON谷歌脚本函数:

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本身作为参数在工作表单元格级别传递

非常感谢在这件事上给予的任何帮助。谢谢

  • 您已经确认curl命令工作正常
  • 您希望将以下curl命令转换为Google Apps脚本

    curl -G \
    -d "date_preset=last_7_days" \
    -d "access_token=howdy" \
    "https://graph.facebook.com/v3.2/1234567890/insights"
    
如果我的理解是正确的,这次修改怎么样

修改点:
  • 使用
    -G
    -d“date\u preset=last\u 7\u days”-d“access\u token=howdy”
    运行curl命令时,将请求这些键和值作为查询参数。因此,当此命令转换为Google Apps脚本时,需要将这些键和值转换为查询参数
  • 直到最近,在UrlFetchApp上,当请求将
    payload
    作为GET方法时,我已经确认
    payload
    的值被用作查询参数。但是现在我确认了,即使使用
    方法“GET”
    请求
    有效负载作为GET方法,也会请求它作为POST方法。我不确定这是否是暂时的情况。但我认为错误的原因可能是这样的
当上述修改点反映到脚本中时,它将变成如下所示

修改脚本: 请按以下方式修改并重新运行

发件人: 致: 注:
  • 修改后的脚本与curl命令相同。但如果出现错误,请再次确认URL、访问令牌和其他参数。关于这些参数,我不确定正确的值。我为这种情况道歉
参考:

如果我误解了你的问题,结果不是你想要的,我道歉。

谢谢!成功了。我唯一需要做的修改是将GET方法保留在fetchOptions中。因此,它变成了
var fetchOptions={“method”:“GET”}
,然后使用这些参数作为URL查询字符串的一部分,如您所述。@Kevin Hemphill感谢您的回复。我很高兴你的问题解决了。
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");