@danilx556

Как обрабатывать POST-запросы в Google App Script?

Хочу принимать вебхук из стороннего сервиса и обрабатывать его в App Script.

Документация сервиса, который отправляет вебхук https://leelooai.atlassian.net/wiki/spaces/DOC/pag...

Написал скрипт и опубликовал его как приложение:
function doPost(e){
  Logger.log(e.postData.contents);
  return ContentService.createTextOutput('response status 200')
}


Вставил ссылку приложения и начал отправлять вебхуки из стороннего сервиса.

Но встретил проблему - вебхуки поступают, но они пустые, в них ничего нет:
60e482835e21a689013008.png
Видны записи, но они не кликабельные, нельзя развернуть и посмотреть логи...

Пробовал выводить в лог разные значения:
e, e.postData.getDataAsString() – безуспешно.

Решил попробовать принять вебхуки в стороннем сервисе - там всё работает:

Вот такой вебхук приходит:
{
  "method": "POST",
  "path": "/",
  "query": {},
  "headers": {
    "x-forwarded-for": "18.159.207.230",
    "x-forwarded-proto": "https",
    "x-forwarded-port": "443",
    "host": "a33172629dd88415897962d6f803923a.m.pipedream.net",
    "x-amzn-trace-id": "Root=1-60e47bc7-0fbad7b9443e153908bda2f2",
    "content-length": "668",
    "content-type": "application/json"
  },
  "bodyRaw": "{\"events\":[{\"type\":\"SUBSCRIBE\",\"data\":{\"tunnel_id\":\"60d4449f5dfa16280ee1eefd\",\"account_id\":\"602cab53d3959200129b4eec\",\"person_id\":\"602cab53d3959200129b4eeb\",\"leadgentool_id\":\"60d4449f5dfa166e72e1efb9\",\"connection_id\":\"5cc2e9f1db0646000dbe0011\",\"traffic_source_id\":\"60d4449f5dfa1668a7e1efbb\",\"utm_marks\":{\"utm_source\":\"param1\",\"utm_medium\":\"param2\",\"utm_campaign\":\"param3\"},\"email\":\"----------@gmail.com\",\"phone\":\"+79----------25\",\"created_at\":\"2021-07-06T15:50:12.618Z\",\"tunnel_name\":\"А----------ня\",\"account_name\":\"----------\",\"leadgentool_name\":\"System lgt\",\"connection_name\":\"----------\",\"traffic_source_name\":\"Manual\"}}]}",
  "body": {
    "events": [
      {
        "type": "SUBSCRIBE",
        "data": {
          "tunnel_id": "60d4449f5d----------eefd",
          "account_id": "602cab53d----------4eec",
          "person_id": "602cab53d39----------b4eeb",
          "leadgentool_id": "60d4449f5df----------e1efb9",
          "connection_id": "5cc2e9f1db064----------e0011",
          "traffic_source_id": "60d4449f5dfa----------1efbb",
          "utm_marks": {
            "utm_source": "param1",
            "utm_medium": "param2",
            "utm_campaign": "param3"
          },
          "email": "----------@gmail.com",
          "phone": "+79----------5125",
          "created_at": "2021-07----------2.618Z",
          "tunnel_name": "А----------2 июня",
          "account_name": "Данил",
          "leadgentool_name": "System lgt",
          "connection_name": "----------",
          "traffic_source_name": "Manual"
        }
      }
    ]
  }
}


Значит, вебхук отправляется правильно, но я его как-то неправильно обрабатываю в app script.

Подскажите пожалуйста, как правильно обработать этот запрос.
  • Вопрос задан
  • 1403 просмотра
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Если не углубляться, в двух словах: Logger.log() не работает там. Я использую такую штуку:
const logger = {
  log:(val)=>{
    SpreadsheetApp.openById(``) // тут ID таблицы
                  .getSheetByName(`log`) // тут имя листа куда сыпятся логи
                  .appendRow([new Date(), `${val}`]);
  }
};

// Использовать так же, только с маленькой буквы
logger.log(`что-то важное`);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы