Как получить данные в скрипте google sheet с помощью запроса POST в формате JSON? - PullRequest
0 голосов
/ 26 октября 2018

Этот вопрос касается получения POST-запроса откуда-либо.Я ищу функцию скрипта листа Google, которая может принимать и обрабатывать данные из запроса POST в формате JSON.Не могли бы вы предложить какой-нибудь пример?

Запрос POST здесь:

https://script.google.com/macros/s/BOdirjv45Dn6FHrx_4GUguuS6NJxnSEeviMHm3HerJl4UsDBnDgfFPO/

{
  "p1": "writeTitle",
  "p2": [[URL]],
  "p3": [[PIC_A]],
  "p4": [[PIC_B]],
  "p5": [[TITLE]]
}

application/json

doPost() не работает:

doPost(e) {
var json = JSON.parse(e.postData.contents);
Logger.log(json);
}

1 Ответ

0 голосов
/ 27 октября 2018
  • Вы хотите получить значение из тела запроса как объект.
  • Вы уже развернули веб-приложения.

Если мое понимание вашей ситуации верноекак насчет этой модификации?

Опубликовать и получить объект:

В качестве примера я использовал следующую команду curl для POST в Web Apps.

curl -L \
-H 'Content-Type:application/json' \
-d '{"p1": "writeTitle","p2": "[[URL]]","p3": "[[PIC_A]]","p4": "[[PIC_B]]","p5": "[[TITLE]]"}' \
"https://script.google.com/macros/s/#####/exec"

Когда вышекоманда выполняется, e из doPost(e) выглядит следующим образом.

{
  "parameter": {},
  "contextPath": "",
  "contentLength": 90,
  "queryString": "",
  "parameters": {},
  "postData": {
    "type": "application/json",
    "length": 90,
    "contents": "{\"p1\": \"writeTitle\",\"p2\": \"[[URL]]\",\"p3\": \"[[PIC_A]]\",\"p4\": \"[[PIC_B]]\",\"p5\": \"[[TITLE]]\"}",
    "name": "postData"
  }
}

Размещенная полезная нагрузка может быть получена с помощью e.postData.Из приведенного выше ответа выясняется, что желаемое значение можно получить с помощью e.postData.contents.Между прочим, когда параметр запроса и полезная нагрузка задаются следующим образом,

curl -L \
-H 'Content-Type:application/json' \
-d '{"p1": "writeTitle","p2": "[[URL]]","p3": "[[PIC_A]]","p4": "[[PIC_B]]","p5": "[[TITLE]]"}' \
"https://script.google.com/macros/s/#####/exec?key=value"

value можно получить с помощью e.parameter или e.parameters.И полезную нагрузку можно получить с помощью e.postData.contents.

Модифицированный скрипт:

В этом модифицированном скрипте результат можно увидеть на Stackdriver, а также вернуть результат.

function doPost(e) {
  var json = JSON.parse(e.postData.contents);
  console.log(json);
  return ContentService.createTextOutput(JSON.stringify(json));
}

Примечание:

  • Когда вы изменили свой скрипт веб-приложений, пожалуйста, повторно разверните его как новую версию.Таким образом, последний скрипт отражается на веб-приложениях.Это важный момент.

Справка:

Если это не то, что вы хотите, извините.

...