【问题标题】:Convert Facebook API Curl Request to Javascript for ImportJSON Function in Google Sheets将 Facebook API Curl 请求转换为 Javascript 以用于 Google 表格中的 ImportJSON 函数
【发布时间】:2026-01-22 10:10:02
【问题描述】:

我正在尝试使用ImportJSON Google Apps Script from Brad Jasper 将一些 Facebook Ad Insights API 数据提取到 Google 表格中。我正在尝试使用键/值对作为参数和访问令牌将 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 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 本身是在工作表单元格级别作为参数传递的。

非常感谢您对此事的任何帮助。谢谢!

【问题讨论】:

    标签: javascript json curl google-apps-script


    【解决方案1】:
    • 您已经确认您的 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 的值被用作查询参数。但现在我确认,即使使用method: "GET"payload 请求为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、访问令牌等参数。关于这些参数,我不确定正确的值。对于这种情况,我深表歉意。

    参考:

    如果我误解了您的问题并且结果不是您想要的,我深表歉意。

    【讨论】:

    • 谢谢!那行得通。我必须做的唯一修改是将 GET 方法保留在 fetchOptions 中。所以它变成了var fetchOptions = {"method": "GET"},然后使用参数作为你所说的 URL 查询字符串的一部分。
    • @Kevin Hemphill 感谢您的回复。很高兴您的问题得到解决。
    最近更新 更多