如何将返回的Google应用脚本“ doPost(e)”函数存储在cURL中的变量中?

时间:2018-09-25 10:12:00

标签: php curl google-apps-script

我已经在Google应用脚本上编写了doPost(e)函数,该函数将根据发送的数据返回一个数字。脚本返回一个数字,如下所示:

Google App脚本代码:

doPost(e)
{
/* Code that does stuff with the parameters */
var results = 3;
var result_output = JSON.stringify(results);
var output = ContentService.createTextOutput(result_output).setMimeType(ContentService.MimeType.JSON);
return output;
}

这是我的cURL代码,该代码发送适当的值,旨在将Google App脚本代码返回的输出存储在变量中,以供以后在程序中使用:

function connect_to_GAS() 
{
// Get cURL resource
$curl = curl_init();
// Set some options
curl_setopt_array($curl, array(
CURLOPT_URL => 'puturlhere',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
// add params here
)
));

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); // there is a redirect

// Send the request, save response to $resp

$resp = curl_exec($curl);

echo $resp;
}

当我返回$ resp值时,它仅返回“ 1”,因为该函数已成功执行,但是由于某种原因,我无法获取它来存储重新调整的值!!!

我已将其部署为Web应用程序,并且脚本的Post函数确实起作用,但是我的cURL端未按我希望的那样接收值。令人沮丧的是,当我运行cURL脚本时,所需的值会显示在结果网页中,但我无法访问它。

有人知道我如何存储回复吗???? 任何帮助深表感谢!!

1 个答案:

答案 0 :(得分:0)

  1. 第一件事是,每当您对脚本进行更改时,都需要将其保存为新版本并再次发布以获取 有效。
  2. 您返回的是数字,但不是json。尝试返回正确的json。
  3. 在这种情况下,我会使用食尸鬼。
  4. 结果1与从gs文件返回的变量无关。 1表示卷曲成功。

示例代码

在gs文件中

function doPost(e){
  //WHILE PRODUCTION
  //var postData = JSON.parse(e.postData.contents);
  //WHILE TESTING
  //var postData = e.postData.contents;
  return ContentService.createTextOutput(JSON.stringify({'status': 'success'})).
  setMimeType(ContentService.MimeType.JSON);
}

function test(){
  var payload = {
  "key1": "value1",
  "key2": "value2",
  }

  var e = {
    postData: {
    contents: payload
  }
 };
  var returned = doPost(e);
}

在php文件中

<?php
    session_start();
    require_once '../vendor/autoload.php';
    $client = new GuzzleHttp\Client(['verify'=>false]);
//  Webapp link
    $url = 'https://script.google.com/macros/s/yourwebapplink/exec';
    $payload = json_encode(array("key1" => "value1", "key2" => "value2"))
    $response = $client->request('POST', $url, ['json' => $payload]);
    $body = json_decode($response->getBody());
    print_r($body);
    return;
?>

如果使用作曲家,则很容易安装guzzle