Google 带有 Python 示例的脚本 - GET 请求 - HTML 结果错误

Google Script with Python example - GET Request - HTML result error

我正在尝试通过 API GET 请求连接 Google 电子表格以从 snov.io 接收一些信息,但我得到的是 HTML 结果而不是一个JSON。下面的 Python 代码有效,但 Google Appscript 无效。有什么建议么?谢谢:)

Python 代码 - 工作

params = {
  'access_token': token,
  'domain': site,
  'type': 'all',
  'limit': 100,
  'lastId': 0,
  }
res = requests.get('https://api.snov.io/v2/domain-emails-with-info', params=params)
return json.loads(res.text)

AppScript - 不工作 - 收到 HTML 结果

  'access_token': token,
  'domain': site,
  'type': 'all',
  'limit': 100,
  'lastId': 0,
    }

var url = 'https://api.snov.io/v2/domain-emails-with-info'
var response = UrlFetchApp.fetch(url, {method: "get", payload: params, 'muteHttpExceptions': true}); 
var json = response.getContentText()
console.log(response.getContentText())
obj = JSON.parse(json)
result=obj.emails
return result
}

HTML 结果:(

<html>
    <head>
        <meta charset="UTF-8" />
        <meta name="robots" content="noindex,nofollow" />
        <style>                body { background-color: #fff; color: #222; font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0; }
                .container { margin: 30px; max-width: 600px; }
                h1 { color: #dc3545; font-size: 24px; }</style>
    </head>
    <body>
                        <div class="container">
                    <h1>Whoops, looks like something went wrong.</h1>
                </div>
    </body>
</html>

我相信你的目标如下。

  • 您想将以下 python 脚本转换为 Google Apps 脚本。

      params = {
        'access_token': token,
        'domain': site,
        'type': 'all',
        'limit': 100,
        'lastId': 0,
        }
      res = requests.get('https://api.snov.io/v2/domain-emails-with-info', params=params)
      return json.loads(res.text)
    

在这种情况下,下面的修改脚本怎么样?

修改后的脚本:

var params = {
  'access_token': token,
  'domain': site,
  'type': 'all',
  'limit': 100,
  'lastId': 0,
};
var url = 'https://api.snov.io/v2/domain-emails-with-info';
var response = UrlFetchApp.fetch(url + "?" + Object.entries(params).map(([k, v]) => k + "=" + v).join("&"), { method: "get", 'muteHttpExceptions': true });
  • params在python的请求模块中作为GET方法使用时,即作为查询参数。但是,在Google Apps Script 的“UrlFetchApp.fetch”方法中,当params 用于payload 时,它会自动用作POST 方法。我认为这可能是您遇到问题的原因。

参考: