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);
}