Как получить значения строк в поле GRID для отправленной формы - PullRequest
1 голос
/ 15 февраля 2020

Мы отправляем ответы формы в веб-крючок с помощью скрипта Google Apps, прикрепленного к форме. Прекрасно работает, за исключением случаев, когда мы используем тип поля GRID в форме (например, см. Ниже)

Grid Field

, мы можем только получить значение столбца для каждого строка, но не значение строки.

Итак, в примере с полем сетки мы получаем массив следующим образом (элемент 1) = OPPORTUNITY: OT Не учитывается; (элемент 2) = ВОЗМОЖНОСТЬ: Рассмотрено OT

Есть ли способ, которым мы также можем получить значения строк?

Опция 1 второй параллельный массив (элемент 1) = OT 1; (элемент 2) = OT 2

или вариант 2 (элемент 1) = OT 1 && ВОЗМОЖНОСТЬ: OT не учитывается; (элемент 2) = OT 2 && OPPORTUNITY: OT Рассмотрено

Вот ГАЗ, который мы в настоящее время используем для получения отправки формы

function onFormSubmit(e) {
 var data = {
      "id": e.source.getId(),
   "OTC_user" : Session.getActiveUser().getEmail(),
      "title": e.source.getTitle() ? e.source.getTitle() : "Untitled Form",
      "is_private": e.source.requiresLogin(),
      "is_published": e.source.isAcceptingResponses(),
      "id": e.response.getId(),
      "timestamp": e.response.getTimestamp(),
      "fields": e.response.getItemResponses().map(function(y) {
    return {
        h: y.getItem().getTitle(),
        k: y.getResponse()
    }
      }, this).reduce(function(r, y) {
    r[y.h] = y.k;
    return r
      }, {})
 };

 var options = {
  method: "post",
  payload: JSON.stringify(data, null, 2),
  contentType: "application/json; charset=utf-8",
 };

 UrlFetchApp.fetch("https://<WEBHOOK URL REMOVED", options);
};

Спасибо за любую помощь

1 Ответ

0 голосов
/ 17 февраля 2020

Да, есть способ получить значения строк. Когда вы используете getItem(), который возвращает элемент интерфейса , вы можете указать, что вы хотите GridItem , используя метод asGridItem(), таким образом, вы сможете получить значения строк, просто вызвав метод getRows(). Это небольшой пример кода, чтобы дать вам лучшее представление о простом объяснении, которое я написал:

function onFormSubmit(e) {
  var itemVals = e.response.getItemResponses()[0].getItem().asGridItem();
  var rowVals = itemVals.getRows();
  var colVals = itemVals.getColumns();
  rowVals.forEach(function(e){Logger.log(e)});
  colVals.forEach(function(e){Logger.log(e)});
}
...