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 方法。我认为这可能是您遇到问题的原因。
参考:
我正在尝试通过 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 方法。我认为这可能是您遇到问题的原因。