如何在Google脚本中从这个特定的POST HTTP调用中获得结果—在python中工作良好

如何在Google脚本中从这个特定的POST HTTP调用中获得结果—在python中工作良好,python,post,google-apps-script,Python,Post,Google Apps Script,我得到了这个用python编写的简单脚本 import requests val = "id" data = { 'val': val, 'type': '1' } session = requests.session() response = session.post('https://www.someweb.com/modules/output/ajax.check_results.php', data=data) print(response.json

我得到了这个用python编写的简单脚本

import requests

val = "id"

data = {
  'val': val,
  'type': '1'
}

session = requests.session()

response = session.post('https://www.someweb.com/modules/output/ajax.check_results.php', data=data)

print(response.json())
出于安全原因,我不允许透露正确的url

我不懂python(我可以在我的计算机上运行上面的代码,它工作得很好),所以我想将代码移植到Google应用程序脚本。现在看来是这样

function getResults() {
  
  var url = 'https://www.someweb.com/modules/output/ajax.check_results.php';

  var data = {
    'val': 'id',
    'type': '1'
  }
  var options = {
      "method": "post",
 //     "headers": headers,
      "data": data
  };
  var response = UrlFetchApp.fetch(url, options);

  Logger.log(response.getContent);
  Logger.log(response);
  Logger.log(response.getAllHeaders());
  Logger.log(response.getResponseCode());
  Logger.log(response.getContentText());
  //Logger.log(JSON.parse(response.getContent()));
  //Logger.log(JSON.parse(response.getContentText()));
  //Logger.log(JSON.parse(response));
} 
2:47:22 PM Notice  Execution started
2:47:22 PM Info    function () { [native code] }
2:47:22 PM Info 
2:47:22 PM Info    {Content-Type=text/html; charset=UTF-8, Expires=Thu, 19 Nov 1981 08:52:00 GMT, Date=Sun, 24 Jan 2021 13:47:22 GMT, Set-Cookie=PHPSESSID=ibdotvlrrec1q6glnbe8i0iu23; path=/, Server=Apache/2.4.38 (Debian), Cache-Control=private, must-revalidate, Content-Length=0, Pragma=no-cache, keep-alive=timeout=5, max=100, Connection=Keep-Alive}
2:47:22 PM Info    200.0
2:47:22 PM Info
2:47:23 PM Notice  Execution completed
输出结果如下所示

function getResults() {
  
  var url = 'https://www.someweb.com/modules/output/ajax.check_results.php';

  var data = {
    'val': 'id',
    'type': '1'
  }
  var options = {
      "method": "post",
 //     "headers": headers,
      "data": data
  };
  var response = UrlFetchApp.fetch(url, options);

  Logger.log(response.getContent);
  Logger.log(response);
  Logger.log(response.getAllHeaders());
  Logger.log(response.getResponseCode());
  Logger.log(response.getContentText());
  //Logger.log(JSON.parse(response.getContent()));
  //Logger.log(JSON.parse(response.getContentText()));
  //Logger.log(JSON.parse(response));
} 
2:47:22 PM Notice  Execution started
2:47:22 PM Info    function () { [native code] }
2:47:22 PM Info 
2:47:22 PM Info    {Content-Type=text/html; charset=UTF-8, Expires=Thu, 19 Nov 1981 08:52:00 GMT, Date=Sun, 24 Jan 2021 13:47:22 GMT, Set-Cookie=PHPSESSID=ibdotvlrrec1q6glnbe8i0iu23; path=/, Server=Apache/2.4.38 (Debian), Cache-Control=private, must-revalidate, Content-Length=0, Pragma=no-cache, keep-alive=timeout=5, max=100, Connection=Keep-Alive}
2:47:22 PM Info    200.0
2:47:22 PM Info
2:47:23 PM Notice  Execution completed
伐木工人给我的

3:14:03 PM Error SyntaxError: Unexpected end of JSON input  getResults @ 
我认为问题在于Google脚本需要一秒钟才能完成,而python需要14秒钟。它等待得到结果


有人可以帮助你如何制作谷歌脚本来获得结果?

请看一下文档<代码>数据不是可用参数之一。您应该改用
有效负载
,并将
数据
作为字符串传递

function getResults() {
  const url = 'https://www.someweb.com/modules/output/ajax.check_results.php';
  const data = {
    'val': 'id',
    'type': '1'
  };
  const options = {
    'method': 'post',
    'payload': JSON.stringify(data)
  };
  const response = UrlFetchApp.fetch(url, options);
  console.log(response.getContentText()); // string
  console.log(JSON.parse(response.getContentText())); // object, if it can be parsed
}

您收到的错误来自
JSON.parse(response.getContent())
,因为它需要一个字符串,但返回一个原始二进制数据数组。根据我上面的例子,您应该改为使用。

您是对的。我捕获了XHR通信,复制了cURL并在python中使用它,因为它工作正常,所以我在Google脚本中使用了它。