Facebook图形api错误UrlFetch失败,因为过多的流量被发送到指定的URL

时间:2015-06-23 14:56:30

标签: facebook-graph-api google-apps-script

我正在尝试使用Google脚本中的Facebook图形API来获取Facebook广告系列。

我有近5500个数据,我正在尝试每10分钟获取一次数据,并在电子表格中添加更新后的数据。

代码运行正常。但是经过2-3次迭代我得到了一个错误

UrlFetch failed because too much traffic is being sent to the specified URL

如果我再次与其他电子邮件分享我的Google脚本,则会在接下来的2-3次迭代中使用,然后再次失败。

我得到了一个解决方案,可以在从Previous Stackoverflow Question

获取数据时添加额外的选项

但是在添加选项

之后
{"useIntranet" : true}

我的请求超时问题。

还有其他解决方法可以解决此问题吗?我需要在一天内每10分钟获取一次数据。

2 个答案:

答案 0 :(得分:3)

这不是您的通话问题,而是您正在拨打的电话数量。你可能需要减少一点。如您所见here,限制是每600秒(10分钟)拨打600电话。所以,取决于你取得什么,如何以及在什么数量,我觉得你的描述足以让我确信你能够做2-3次迭代的原因是因为在结束时第3个你已超过1个通话/秒率,它基本上是你从那里关闭。

我还建议您查看此page以获取与Facebook Graph API相关的更多限速信息。

答案 1 :(得分:0)

在使用代码后,我得到的是fb graph api的限制,例如每600秒(10分钟)600次调用。但是,从谷歌应用程序脚本调用fb graph api的限制要少得多。这就是为什么当我每10分钟使用jQuery Ajax加载数据时它工作正常但是当我使用

加载相同的数据时
UrlFetchApp.fetch

在谷歌应用程序脚本中,它在一天内2-3次尝试后阻止了我。

因为限制是来自谷歌应用程序脚本的fb graph api,我试图调用其他api而不是fb graph api并且它有效,但它并没有阻止我。

所以我创建了一个节点js服务器,如: -

var express = require("express"),
app = express(),
cors = require('cors'),
bodyParser = require('body-parser'),
request = require('request');
app.use(cors());

app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 

app.get("/test",function(req,res){
  res.send("Test success");
})
app.post('/getFbFeed', function(req, res) {
  // Sending request to fb api using the request modules of node, the fb  feed url is coming from
  // the frontend as a request parameter.
   request(req.body.url, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        res.send(body); // Send the response of the requested url to the frontend.
      }
  })
})
app.listen(process.env.PORT || 3000);

因此,此代码将从fb graph api加载数据,并且我将从google apps脚本发送fb graph api的url。

所以,在我写的谷歌应用程序脚本中

var options =
  {
   "method" : "post",
   "payload" : {"url" : url}
  };
 // Sending post request to node js server with the fb feed url to load data as there is limit to load data from fb to google apps script.
  response = UrlFetchApp.fetch("http://fbfeed-48431.onmodulus.net/getFbFeed",options);