- Вы хотите отправить данные
responderName=todd&presenterName=steve
в веб-приложения без использования параметра запроса URL. - Ваши веб-приложения были развернуты как
Execute the app as: Me
и Who has access to the app: Anyone, even anonymous
. - Вы хотите отправить данные с помощью скручивания PHP.
Если мое понимание верно, как насчет этого ответа? Думайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
Если вы хотите отправить данные в веб-приложения без использования параметра запроса URL, необходимо использовать метод POST. Так что в вашем случае, пожалуйста, используйте doPost()
вместо doGet()
. Таким образом, данные могут быть получены методом POST.
Модифицированный скрипт:
Скрипт Google Apps:
Пожалуйста, измените скрипт Google Apps следующим образом.
function doPost(e) { // Modified
var params = JSON.stringify(e);
return ContentService.createTextOutput(params);
}
- При изменении сценария веб-приложений, пожалуйста, повторно разверните веб-приложения как новую версию. Этим отражается последний сценарий. Пожалуйста, будьте осторожны.
PHP:
Пожалуйста, измените ваш PHP скрипт следующим образом.
$data = array(
'responderName' => 'todd',
'presenterName' => 'steve'
);
$url = 'https://script.google.com/macros/s/###/exec';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
$header = ['Content-Type: application/json'];
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$response = curl_exec($curl);
echo $response;
curl_close($curl);
- В этом случае, заголовки могут не потребоваться.
Результат:
При использовании вышеуказанного сценария PHP следующий объект события может быть получен с e
из doPost(e)
. В этом случае данные могут быть получены с помощью e.postData.contents
. Но в этом случае, если вы хотите использовать данные как JSON объект, используйте JSON.parse()
.
{
"parameter": {},
"contextPath": "",
"contentLength": 48,
"queryString": "",
"parameters": {},
"postData": {
"type": "application/json",
"length": 48,
"contents": "{\"responderName\":\"todd\",\"presenterName\":\"steve\"}",
"name": "postData"
}
}
Ссылки:
Если я неправильно понял ваш вопрос и это не то направление, которое вам нужно, я прошу прощения.