UrlFetch失败,因为过多的流量被发送到指定的URL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UrlFetch失败,因为过多的流量被发送到指定的URL相关的知识,希望对你有一定的参考价值。

我正在为Google表格编写一个脚本,该脚本使用Facebook的Graph API来获取我的数据。一切都在今天早些时候工作但突然间我收到一个错误:

UrlFetch失败,因为过多的流量被发送到指定的URL。

我还没有达到关于使用UrlFetch的任何配额,因为我仍然可以从其他不是graph.facebook.com的网址中获取 - 所以这个问题似乎特别针对Facebook。

脚本代码

var myClientID = '';
var myClientSecret = '';
var myAccessToken = '';
var graphURL = 'https://graph.facebook.com/v2.3/';

function getPageLikes(campaign_id) {
  var searchParams = '/stats?fields=actions';
  var campaignID = campaign_id;
  var fullURL = graphURL + campaignID + searchParams + '&access_token=' + myAccessToken;
  var fetchResult = UrlFetchApp.fetch(fullURL);
  var campaign = JSON.parse(fetchResult);
  var likes = campaign.data[0].actions.like;
  return likes;
}

Google Sheet Formula

=getWebClicks('E2')
答案

经过一番研究,我发现了一个解决方案。我将'useIntranet'选项作为参数添加到fetchResult,这似乎解决了这个问题。我想这个请求现在是从另一个资源发送的,不会限制对Facebook的Graph API的请求。

如果有人能解释为什么这解决了我的问题,那也会很棒!

var options = {"useIntranet" : true};
var fetchResult = UrlFetchApp.fetch(fullURL, options);
另一答案

我没有Facebook所以我不能尝试这个,用以下内容替换var fetchResult = UrlFetchApp.fetch(fullURL);

do{
  var fetchResult = UrlFetchApp.fetch(fullURL);
}while(fetchResult == 'UrlFetch failed because too much traffic is being sent to the specified URL.');

或者与此错误对象匹配的任何内容。

另一答案

正确的答案是:等到禁令解除之后。

以上是关于UrlFetch失败,因为过多的流量被发送到指定的URL的主要内容,如果未能解决你的问题,请参考以下文章

来自 mandrill 的 ValidationError 与谷歌应用引擎的 urlfetch

文件大小过多的 Java

TCP流量控制

TCP流量控制

熔断限流

“获取时超时” URLFetch GAE/J