【问题标题】:UrlFetch failed because too much traffic is being sent to the specified URLUrlFetch 失败,因为向指定 URL 发送的流量过多
【发布时间】:2015-04-17 03:53:32
【问题描述】:

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

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

我没有达到任何关于使用 UrlFetch 的配额,因为我仍然可以从非 graph.facebook.com 的其他 url 获取 - 所以问题似乎专门针对 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;
}

谷歌表格公式

=getWebClicks('E2')

【问题讨论】:

标签: facebook-graph-api google-apps-script google-sheets custom-function


【解决方案1】:

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

如果有人能解释为什么这解决了我的问题,那就太好了!

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

【讨论】:

  • 也为我解决了这个问题!任何关于这里发生的事情的进一步信息确实很棒。
  • 今天我的脚本停止运行 - 开始出现一些超时,我将其缩小到这个 Intranet 选项。现在我真的必须明白发生了什么。
  • 我也遇到了同样的问题,但是在添加了“useIntranet”选项后:真的我超时了。如果我与其他一些电子邮件 ID 共享我的代码,它会工作一段时间,然后再次出现 URL 获取错误。 @Joel 你的问题解决了吗?
  • 根据我的经验,“useIntranet”选项显然不再起作用。
  • 我最终设置了一个快速的 laravel 应用程序,它接受相同的数据(访问令牌和广告集 id),使用 Guzzle 将请求发送到 Facebook,并将其作为 json 传递回 Google 表格。这是我能想到的唯一解决方案,因为 Google 不会告诉我错误代码或发生这种情况的原因。
【解决方案2】:

我没有 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.');

或任何与此错误对象匹配的东西。

【讨论】:

  • 实际上,一旦你的插件/脚本达到这个配额,它会在几天内永久生效,所以你的脚本唯一能做的就是可能使禁令持续更长时间。
  • @Mario 因为他说只有 Facebook 有错误,所以它不能是谷歌方面的禁令。
  • @Joel 是对的,错误是在 Google 方面引发的,因为 Google 本身执行了一项策略来阻止脚本调​​用 Facebook。而且似乎该政策是特定于 facebook 的,因为没有对其他 url 强制执行类似的配额,例如 twitter。
  • 顺便说一句,我已经打开了一个关于此的问题:code.google.com/p/google-apps-script-issues/issues/…
【解决方案3】:

正确答案是:等禁令解除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多