Предварительно заполните форму Google с помощью идентификатора без использования электронной почты

#javascript #google-apps-script #google-sheets #google-forms

Вопрос:

Вот моя ситуация. У меня есть длинный список студентов (у каждого студента есть удостоверение личности); и у каждого студента есть свои предпочтения в еде и играх … (все эти данные хранятся в электронной таблице Google). Я хотел бы подтвердить всем студентам, что вся информация верна.

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

Тем не менее, я нахожу это немного «грязным» (? Я не совсем уверен, что это правильное слово, так как они должны проверить свою электронную почту, нажать на ссылку, и когда им снова понадобится изменить свои данные, они должны найти последнее электронное письмо, отправленное мной, и нажать на новую ссылку).

Интересно, можно ли это решить, просто используя только форму Google (или, может быть, встроив форму Google на другую страницу?)? Я подумываю о создании 2 форм Google:

  1. Одна форма для студентов, чтобы ввести свой идентификатор, и когда они нажмут «Отправить», они перейдут во вторую форму Google с их последней информацией (полученной из электронной таблицы), предварительно заполненной для них.
  2. Вторая форма-это форма, заполненная их ранее введенной информацией.

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

Вот мое довольно плохое встраивание:

 <!-- Normal form embed code, add an ID -->
<iframe id="gform" src="https://docs.google.com/forms/d/e/MyFirstFormURL/viewform?embedded=true" width="640" height="700" frameborder="0" marginheight="0" marginwidth="0" style="margin:0 auto; max-width:100%;">Loading…</iframe>

<script type="text/javascript">
var load = 0;

document.getElementById('gform').onload = function(){
    /*Execute on every reload on iFrame*/
    load  ;
    if(load == 2){
        /*Second reload is a submit*/
        document.location = "https://docs.google.com/forms/d/e/MySecondFormURL/viewform?embedded=true";
    }
}
</script>
 

Но я сталкиваюсь с 2 проблемами (или, может быть, с 3 проблемами).:

  1. Я использую событие onload для iframe, чтобы проверить, была ли уже отправлена форма; что плохо, так как оно все равно перенаправит меня на вторую страницу, даже когда я нажму «Очистить форму».
  2. Я не могу прочитать идентификатор студента, указанный в форме Google, встроенной в iframe. 🙁
  3. Даже если я каким-то образом смогу прочитать идентификатор в своей форме Google, у меня нет возможности выполнить внешний поиск в моей электронной таблице, чтобы получить желаемую предварительно заполненную ссылку (это должно быть сделано серверной частью GAS, верно?).

У меня есть некоторые базовые знания в программировании (например, немного C и C ; но у меня очень мало (почти ничего) опыта, когда дело доходит до веб-разработки), я просто перечисляю все, о чем я думал и над чем работал в этом посте. 🙁

Кто-нибудь может меня подтолкнуть? 🙁

Заранее большое вам спасибо, :*

Ответ №1:

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

Вместо того , чтобы отправлять по электронной почте прямую ссылку на a form , я бы отправил студентам ссылку на веб-страницу, которая на самом деле является a google spreadsheet (пример здесь-Не стесняйтесь отправлять данные теста в форме).

Обязательно свяжите ответы формы, чтобы они отображались в той же электронной таблице, а затем используйте index Counta функцию и (см. Ниже), чтобы получить соответствующие последние ответы, как я сделал в ячейках b3 и c3 на скриншоте ниже. Эти последние ответы могут быть встроены в ссылку на форму, показанную в ячейке A3 , которая гарантирует, что в электронной таблице всегда будет ссылка на последнюю отправку.

![введите описание изображения здесь

Примечание.Если вы хотите предоставить своим студентам ссылку на фактическую электронную таблицу, это будет немного менее совместимо с браузером, но позволит мгновенно обновлять ссылку на обновленную форму, в то время как веб-страница обновляется каждые 5 минут.

Удачи.

Комментарии:

1. Большое вам спасибо, я немного повозился с этим, и это действительно дало мне несколько идей для решения моей проблемы. Огромное спасибо, :*

2. Рад, что это сработало. Спасибо, что согласились. Никаких поцелуев на StackOverflow. 🙂