为什么 Google Apps 脚本给我这个 UrlFetchApp 脚本代码 429?

Why is Google Apps Script giving me this UrlFetchApp script code 429?

我遇到了一个 st运行ge 错误,我一直在兜圈子试图找出答案。 我决定学习一些 JavaScript/google 应用程序脚本来解析我玩的 api 游戏中的一些信息。我遵循了一堆教程并搜索了 google 和 Stack Overflow 的解决方案,但 none 已经奏效了。我想我已经将它缩小到一种特定的方法:“UrlFetchApp”。

现在我只是想从 API 中获取一些 JSON 数据并将其显示在日志中 window.

我一直收到这个:

[21-09-13 09:01:40:770 EDT] Exception: Request failed for https://api.guildwars2.com returned code 429. Truncated server response: {"text":"too many requests"} (use muteHttpExceptions option to examine full response)
    at getRequest(Untitled:4:30)

现在是 st运行ge 部分,我 运行 来自 phone[=31 的脚本=] 在工作中测试一些理论并得到这个:

[21-09-13 09:02:20:943 EDT] {
  "name": "Abomination Hammer",
  "type": "Weapon",
  "level": 0,
  "rarity": "Fine",
  "vendor_value": 0,
  "default_skin": 5014,
  "game_types": [
    "Activity",
    "Wvw",
    "Dungeon",
    "Pve"
  ],
  "flags": [
    "NoSell",
    "SoulbindOnAcquire",
    "SoulBindOnUse"
  ],
  "restrictions": [],
  "id": 15,
  "chat_link": "[&AgEPAAAA]",
  "icon": "https://render.guildwars2.com/file/E8507FFB6CF3C9094A69956344CEDBD9B47D95B6/434872.png",
  "details": {
    "type": "Hammer",
    "damage_type": "Physical",
    "min_power": 146,
    "max_power": 165,
    "defense": 0,
    "infusion_slots": [],
    "attribute_adjustment": 20.736,
    "infix_upgrade": {
      "id": 112,
      "attributes": []
    },
    "secondary_suffix_item_id": ""
  }
}

我怀疑现在是代码。 那是应该归还的。这是未经编辑的相同代码,在我的 phone 和计算机上多次 运行,结果始终相同。

这是我写的代码行:

function getRequest() {

  var response = UrlFetchApp.fetch('https://api.guildwars2.com/v2/items/15');
     
     Logger.log(response)
}

有人可以帮忙吗?我现在真的很沮丧。

响应状态代码 429 显示用户在给定时间内发送过多请求的情况。根据 Rate Limiting in Guild Wars 的文档,跟踪速率限制 per-IP 并且每分钟的最大请求数为 600。

在您的脚本中,您可以通过使用 response.getAllHeaders()response.getHeaders() 打印 header 来确认速率限制,您将看到 x-rate-limit-limit=600.

X-Rate-Limit-Limit is the maximum number of requests that may be issued within a minute. This is a static value doesn’t contain count for requests you have already sent.

通常,429状态码包括Retry-Afterheader。这表明用户在发出新请求之前必须等待多长时间。您还可以通过打印 header.

来查看

如果 Retry-After 未包含在 header 中,您可以按照上面的 Elchanan shuky Shukrun 评论使用 VPN,因为速率限制是每个 IP 跟踪。您还可以使用 Guild Wars forum 并为可能的错误创建 post。

参考: