JavaScript 获取代码在 Postman 中有效,但在 Google 脚本编辑器中无效
JavaScript Fetch Code Works in Postman, but not Google Script Editor
这个JavaScript获取代码returns我在Postman中需要的数据。但是,我试图让这段代码在我的 google sheet 的 Google 脚本编辑器中工作,它给了我以下错误:
ReferenceError: Headers 未定义第 3 行。
我是编码新手,所以请多多包涵。
知道这里出了什么问题吗?
邮递员代码:
var myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
var raw = "{\n \"id\": 1,\n \"jsonrpc\": \"1.0\",\n \"method\": \"getbeaconbeststatedetail\",\n \"params\": []\n}";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://mainnet.incognito.org/fullnode", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
编辑:
我已经尝试更新这个:
function myFunction() {
var data = {
'request': {
'id': '1',
'jsonrpc': '1.0',
'method': 'getbeaconbeststatedetail',
'params': []
}
};
var payload = JSON.stringify(data);
var options = {
'method' : 'GET',
'headers': { 'Content-Type': "text/plain", 'Accept': "text/plain"},
'muteHttpExceptions': true,
'contentType' : 'application/json',
'body' : payload
};
var url = "https://mainnet.incognito.org/fullnode";
var response = UrlFetchApp.fetch(url, options);
var txt= response.getContentText();
var d=JSON.parse(txt);
var sh1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet14");
for (let i = 0; i < d.length; i++) {
sh1.getRange(1, 1).setValue(d);
}
}
但是,我仍然收到以下错误:
异常:https://mainnet.incognito.org 请求失败返回代码 400
如果您尝试从 Google Apps 脚本发出 HTTP 请求,则必须使用 UrlFetchApp()
方法。
正如@Tanaike 指出的那样,GAS 基于 JS,但并非所有 JS 函数都是允许的。然而,GAS 确实有许多服务可以与 G Suite 产品、外部 API 或服务集成。一项非常有用的服务是 URL Fetch Service,它允许您执行 任何 类型的 Http 请求。
例如:
// Make a GET request with headers.
var options = {
"method" : "GET",
"headers" : {
"Content-Type" : "text/plain",
"API_KEY": "dummydummy"
}
};
var response = UrlFetchApp.fetch("https://api.myawesomeapi.com/get", options);
您也可以提出POST或其他请求。有关用例,请参阅文档中的示例。
更新:
您收到来自“fullnode”端点的 400“错误请求”错误,因为它需要一个带有负载的 POST 请求。
function fetchFullNode() {
var url = "https://mainnet.incognito.org/fullnode";
var data = {
"jsonrpc":"1.0",
"method":"getblockchaininfo",
"params":"",
"id":65
};
var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
var txt= response.getContentText();
return JSON.parse(txt);
}
这个JavaScript获取代码returns我在Postman中需要的数据。但是,我试图让这段代码在我的 google sheet 的 Google 脚本编辑器中工作,它给了我以下错误:
ReferenceError: Headers 未定义第 3 行。
我是编码新手,所以请多多包涵。
知道这里出了什么问题吗?
邮递员代码:
var myHeaders = new Headers();
myHeaders.append("Content-Type", "text/plain");
var raw = "{\n \"id\": 1,\n \"jsonrpc\": \"1.0\",\n \"method\": \"getbeaconbeststatedetail\",\n \"params\": []\n}";
var requestOptions = {
method: 'GET',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://mainnet.incognito.org/fullnode", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
编辑:
我已经尝试更新这个:
function myFunction() {
var data = {
'request': {
'id': '1',
'jsonrpc': '1.0',
'method': 'getbeaconbeststatedetail',
'params': []
}
};
var payload = JSON.stringify(data);
var options = {
'method' : 'GET',
'headers': { 'Content-Type': "text/plain", 'Accept': "text/plain"},
'muteHttpExceptions': true,
'contentType' : 'application/json',
'body' : payload
};
var url = "https://mainnet.incognito.org/fullnode";
var response = UrlFetchApp.fetch(url, options);
var txt= response.getContentText();
var d=JSON.parse(txt);
var sh1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet14");
for (let i = 0; i < d.length; i++) {
sh1.getRange(1, 1).setValue(d);
}
}
但是,我仍然收到以下错误:
异常:https://mainnet.incognito.org 请求失败返回代码 400
如果您尝试从 Google Apps 脚本发出 HTTP 请求,则必须使用 UrlFetchApp()
方法。
正如@Tanaike 指出的那样,GAS 基于 JS,但并非所有 JS 函数都是允许的。然而,GAS 确实有许多服务可以与 G Suite 产品、外部 API 或服务集成。一项非常有用的服务是 URL Fetch Service,它允许您执行 任何 类型的 Http 请求。
例如:
// Make a GET request with headers.
var options = {
"method" : "GET",
"headers" : {
"Content-Type" : "text/plain",
"API_KEY": "dummydummy"
}
};
var response = UrlFetchApp.fetch("https://api.myawesomeapi.com/get", options);
您也可以提出POST或其他请求。有关用例,请参阅文档中的示例。
更新:
您收到来自“fullnode”端点的 400“错误请求”错误,因为它需要一个带有负载的 POST 请求。
function fetchFullNode() {
var url = "https://mainnet.incognito.org/fullnode";
var data = {
"jsonrpc":"1.0",
"method":"getblockchaininfo",
"params":"",
"id":65
};
var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
var txt= response.getContentText();
return JSON.parse(txt);
}