Apps Script API возвращает ошибку 404 для существующего проекта.Ошибка возвращается как HTML, а не как JSON - PullRequest
0 голосов
/ 16 апреля 2019

Я пытался запустить функцию скрипта приложения, используя API скрипта приложения. Я настроил скрипт в консоли и создал oauth-идентификатор клиента для скрипта. Я настроил экран авторизации и развернул скрипт как исполняемый файл API. Я протестировал вызов функции API в том же скрипте, но получил ошибку 404, говорящую:

Запрошенный URL / v1 / scripts / {{my_script_id}}: запуск не найден на этом сервере.

Ответ вернулся в формате HTML. Я также заметил, что скрипт вызывает свой собственный идентификатор клиента при вызове из API.

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

function trigger(){
  var bogus = DriveApp.getRootFolder();
  var argument = ["Value0", "Value1", "Value2", "Value3", "Value4", "Value5"]; 

  //         https://www.googleapis.com/auth/script.external_request
  //         https://www.googleapis.com/auth/spreadsheets

 var postRequest = {
    "Content-Type": "application/json",
    "headers": { "Authorization" : "Bearer " + ScriptApp.getOAuthToken()},
    "function": "setStatus",
    "muteHttpExceptions": true,
    "parameters": [argument],
    "devMode": false
 };

  try{
    var response = UrlFetchApp.fetch("https://script.googleapis.com/v1/scripts/{{my_script_id}}:run", postRequest);
    Logger.log(response);
  }catch(err){
    Logger.log(err);
  }
}

Я ожидал какую-то форму ошибки в форме JSON или, возможно, даже для запуска функции, я получил HTML-документ, который отображал ошибку 404 при отображении.

1 Ответ

1 голос
/ 16 апреля 2019

Вы не POST запрос. По умолчанию .fetch метод: GET.

Добавить в postRequest объект:

method: "POST",

payload также отсутствует в вашем postRequest.

Отрывок:

var postRequest = {
    "method":"POST", //added
    "contentType": "application/json", //key changed
    "headers": { "Authorization" : "Bearer " + ScriptApp.getOAuthToken()},
    "muteHttpExceptions": true,
     "payload": JSON.stringify({   //added
      "function": "setStatus",
      "parameters": argument, //removed []
      "devMode": false
    })
 };

Ссылки:

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