Не удалось отправить ответы формы из электронной таблицы - PullRequest
1 голос
/ 18 января 2020

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

function FillForm() {
  var wrkSht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  for(var i = 2; i <= wrkSht.getLastRow(); i++)
  {
    try{
      UrlFetchApp.fetch("https://docs.google.com/forms/u/0/d/e/SomeID/formResponse", {"method" : "post",
                                                                                                                                    "payload" : {
                                                                                                                                      "entry.1320223480" : wrkSht.getRange("A" + i).getValue(),
                                                                                                                                      "entry.1469028961_sentinel" : wrkSht.getRange("B" + i).getValue(),
                                                                                                                                    "entry.379679049" : wrkSht.getRange("C" + i).getValue()
                                                                                                                                   }});
    }
    catch(ex)
    {
      MailApp.sendEmail("MyEmail@gmail.com", "error at spreedsheet", "name: " + wrkSht.getRange("A" + i).getValue() + " had the error: " + ex)
      throw ex;
    }
  }
}

, но каждый раз, когда я пытаюсь его запустить, я получаю следующую ошибку:

Exception: Request failed for https://docs.google.com returned code 400. Truncated server response: 

<!DOCTYPE html><html lang="en" class="m2"><head><link rel="shortcut icon" sizes="16x16"

 href="https://ssl.gstatic.com/docs/spreadsheets/forms/favic... (use muteHttpExceptions option to examine full response) (line 16, file "Code")

Я подозреваю, что моя проблема в номере записи: один Вопрос в форме с несколькими вариантами ответа, и еще один вопрос, но есть несколько вариантов выбора. по этим вопросам я не смог найти номер записи, поэтому я ввел номер записи input type: hidden, который, как мне кажется, предназначен для разработчиков, которые хотят отправлять ответы с помощью кода, но я не уверен.

может Вы нашли какие-либо проблемы?

Редактировать:

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

1 Ответ

3 голосов
/ 18 января 2020

Мы можем попытаться использовать createResponse() для создания и отправки ответов формы.

  1. Создает новый ответ для формы, используя createResponse().
  2. Чтобы ответить на вопрос, создайте ItemResponse из элемента.
  3. Затем прикрепите его к ответу этой формы, вызвав FormResponse.withItemResponse(response).
  4. Чтобы сохранить собранный ответ, позвоните FormResponse.submit().

https://developers.google.com/apps-script/reference/forms/form.html#createresponse

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