Как я могу сохранить возвращенную функцию сценария приложения Google "doPost (e)" в переменной в cURL? - PullRequest
0 голосов
/ 25 сентября 2018

Я написал функцию doPost (e) в скрипте приложения Google, которая будет возвращать число в зависимости от данных, которые передаются через.Сценарий возвращает число, примерно так:

Код сценария 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.Код сценария в переменной, которая будет использоваться позже в программе:

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», потому что функция была выполнена успешно, но я не могу ее получитьпо какой-то причине хранить возвращенное значение !!!

Я развернул его как веб-приложение, и функция Post скрипта работает, но моя сторона cURL не получает значение так, как мне бы хотелосьэто к.К сожалению, когда я запускаю свой сценарий cURL, на результирующей веб-странице отображается нужное мне значение, но у меня нет возможности получить к нему доступ.

Кто-нибудь знает, как я могу сохранить ответ ????Любая помощь высоко ценится!!

1 Ответ

0 голосов
/ 26 сентября 2018
  1. Во-первых, когда вы вносите изменения в свой скрипт, его нужно сохранить как новую версию и опубликовать снова, чтобы он вступил в силу.
  2. Вы возвращаете число,но не джсон.Попробуйте вернуть правильный json.
  3. Для таких случаев я использую guzzle.
  4. Получаемая в результате 1 не имеет ничего общего с переменной, возвращаемой из файла gs.Это 1 означает, что curl прошел успешно.

Пример кода

В файле 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;
?>

Легко установить жрет, если вы используете композитор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...