Google AppScripts вызывает триггер doPost () с сервера - PullRequest
0 голосов
/ 29 декабря 2018

При попытке вызвать doPost() с сервера я сталкиваюсь с неожиданным ответом.

Посмотрите на следующий сценарий:

function doPost(e) {
  var params = e.parameter;

  return HtmlService.createHtmlOutput(JSON.stringify(params));
}

Когда я отправляю POST-запрос этомусценарий, я ожидаю получить {} в качестве ответа.Когда я использую Postman для отправки запроса POST, я получаю следующий ответ:

<!doctype html><html><head><meta name="chromevox" content-script="no"><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"><link rel="stylesheet" href="/static/macros/client/css/189396996-mae_html_css_ltr.css"><script type="text/javascript" src="/static/macros/client/js/3229800183-warden_bin_i18n_warden.js"></script></head><body role="main"><table id="warning-bar-table" class="full_size" cellspacing="0" cellpadding="0"><tr><td><div id="warning" class="warning-bar"></div></td></tr><tr><td style="height: 100%"><iframe id="sandboxFrame" allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation"></iframe></td></tr></table><script type="text/javascript">
(function() {
var el = document.getElementById('sandboxFrame');
el.onload = function() {
goog.script.init("...");}
el.src = 'https:\/\/n--0lu-script.googleusercontent.com\/userCodeAppPanel';
}());
</script></body></html>

Глядя на этот результат, похоже, что скрипт предназначен для запуска только из браузера.Но наличие doGet() и doPost() заставляет меня подозревать, что Google хотел, чтобы такие звонки также работали.Может кто-нибудь уточнить, что происходит?

1 Ответ

0 голосов
/ 29 декабря 2018

POST работает.Вы возвращаете html, используя HtmlService, который по умолчанию вставляет код загрузки Google в обслуживаемый html.Вместо этого используйте ContentService.

return ContentService.createTextOutput(JSON.stringify(params));
...