Как получить несколько блоков нежелательных событий из одного и того же триггера onFormSubmit? - PullRequest
0 голосов
/ 22 февраля 2019

Сегодня утром я создал форму с одним вопросом , потому что хотел посмотреть на блок событий для себя.Однако процесс принял неожиданный оборот для меня.Мое описание следующее:

Я регистрирую событие onFormSubmit со следующим кодом:

function testFormSubmission(e) {
  var lock=LockService.getUserLock();
  try{
      if(lock.tryLock(30000)) {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('LogSheet');
      var tA=[Utilities.formatDate(new Date(), Session.getScriptTimeZone(),"d/M/yyyy HH:mm:ss")];
      tA=tA.concat(e.values);
      tA.splice(tA.length-1,1,e.triggerUid,e.range.rowStart,e.range.columnEnd,JSON.stringify(e.values));
      sh.appendRow(tA);
      lock.releaseLock();
    }
  }
  catch (e){throw("Couldn\'t get lock for 30 seconds");return;};
}    

У меня есть два изображения моей таблицы ниже:

На самом деле есть только двав столбцах e.values ​​один - это дата, а второй - ответ на вопрос, который «зеленый» или «синий».Пустые столбцы происходят из-за того, что я начал с трех вопросов и собирал электронные письма, но решил для простоты удалить два из них, так как сам генерирую сообщения.

В любом случае ответы, которые нев столбце C не должно быть зеленого или синего, просто не должно быть. Столбец J - это просто JSON.stringify(e.values), и кажется, что в нем есть неверные значения ... Я думаю?Да / Нет

Вот изображение электронной таблицы.(некоторые из них)

Это форма ответов 1 лист:

enter image description here

Это журнал:

enter image description here

Итак, мой вопрос заключается в том, откуда берутся нежелательные добавленные строки в журнале?

Я обновил свой титульный вопрос, потому что не думаю, что получаю несколько заявок, в противном случае я ожидаю, что в ответах на форму 1 будет несколько строк.

Для вашей информации столбец H в LogSheet - это rowStart, поэтому легко определить, какая строка в ответе формы 1 соответствует.

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

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

В моих нежелательных триггерах я только получал e.range.getRow (), чтобы определить, какая строка изменилась, а затем перешел к строке, чтобы выполнить требуемоевычисление.В моем случае строка содержала правильную информацию для всех ложных триггеров (возможно, потому что первый правильно записал данные в электронную таблицу).

Ваш код является отличной защитой для предотвращения этого, но у меня слишком много форм и триггеров, чтобы покрыть их.Поместить этот код во все эти места было бы больно.Будем надеяться, что Google скоро решит эту проблему, и мы больше не увидим никаких ложных триггеров.

0 голосов
/ 25 февраля 2019

Получение ложных триггеров onFormSubmit

Как указывал @JG, я получал более одного триггера от каждой отправки формы.

Я заметил, записав e.values ​​в электронную таблицу, что я не получил ни одного ответа.Поэтому для устранения этих нежелательных триггеров я просто использовал следующую логику.

if(e.values && !e.values[1]){return;}, где e.values[1] был обязательным вопросом.

Мой журнал:

enter image description here

Строки без значения в столбце C являются нежелательными триггерами.

...