Как сделать так, чтобы форма Google извлекала данные из электронной таблицы и отображала их на сайте Google?

Желаемый результат: иметь возможность ввести поисковый запрос в форму Google (предположительно, но не обязательно; это может быть форма на стандартной веб-странице) и получить соответствующие данные из таблицы Google и отобразить в веб-приложении Google Site.

Я научился получать данные из параметризованного URL-адреса и отображать их на сайте Google в следующем вопросе: Как включить данные в URL-адрес для чтения веб-приложением Google Apps Script?

Итак, "технология" для получения и отображения данных электронной таблицы есть, но я не знаю, с чего начать, когда дело доходит до извлечения данных из онлайн-формы, а не URL. Возможно, при отправке как-нибудь прочтите значения формы, создайте параметризованный URL-адрес и перейдите на эту страницу для отображения данных?


person MrGreggles    schedule 11.10.2017    source источник


Ответы (1)


Как насчет этого образца? Это очень простой пример сценария. Пожалуйста, измените его в соответствии с вашей средой. Этот пример извлекает данные из электронной таблицы с помощью текста для поиска и отображает соответствующую строку. Чтобы использовать этот образец, выполните следующие действия.

  1. Скопируйте и вставьте следующие сценарии в свой редактор сценариев.
  2. Введите идентификатор электронной таблицы и имя листа, которое используется для поиска данных.
  3. Разверните веб-приложения и запустите сценарий.
  4. Введите текст для поиска и нажмите кнопку «ОК».

Сценарий:

Скрипт Google Apps: code.gs

function doGet() {
  return HtmlService.createTemplateFromFile('index').evaluate();
}

function getData(e) {
  var id = "### Spreadsheet ID ###";
  var sheetname = "### Sheet name ###";
  var data = SpreadsheetApp.openById(id).getSheetByName(sheetname).getDataRange().getValues();
  var ar = [];
  data.forEach(function(f) {
    if (~f.indexOf(e.searchtext)) {
      ar.push(f);
    }
  });
  return ar;
}

HTML: index.html

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form>
<input type="text" name="searchtext">
<input type="button" value="ok" onClick="getData(this.parentNode)" />
</form>
<pre id="disp"></pre>

<script>
function dispData(e) {
  $('#disp').text(JSON.stringify(e));
}
function getData(e) {
  google.script.run.withSuccessHandler(dispData).getData(e);
}
</script>

Пример таблицы:

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

Результат :

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

Если я неправильно понял ваш вопрос, извините.

person Tanaike    schedule 11.10.2017
comment
Большое спасибо за это. К сожалению, когда я публикую его, копирую URL-адрес в новую вкладку и нажимаю Enter, я получаю следующее сообщение: Извините, в данный момент невозможно открыть файл. Пожалуйста, проверьте адрес и попробуйте снова. - person MrGreggles; 13.10.2017
comment
@MrGreggles Приносим извинения за неудобства. Теперь я подтвердил, что этот сценарий снова работает нормально. После изменения сценария необходимо обновить версию проекта. Таким образом, последние версии сценария могут использоваться веб-приложениями. Если вы хотите узнать, как получить URL, подтвердите здесь или здесь. - person Tanaike; 13.10.2017
comment
@MrGreggles Если это не сработало, создайте новый проект, скопируйте и вставьте скрипты и запустите его. Даже если вы это сделали, если это не сработало, могу я спросить вас о подробностях, которые вы сделали? - person Tanaike; 13.10.2017
comment
Спасибо за ваши добрые ответы. Я заставил его работать, а потом ничего не вышло; потом это сработало, потом нет. Я посмотрю еще раз, когда немного отдохну. Но это выглядит многообещающим, и я очень ценю ваши усилия здесь! - person MrGreggles; 15.10.2017
comment
@MrGreggles, извините за неудобства. Я хочу решить вашу проблему. Итак, если вы можете разрешить, могу я подтвердить ваш сценарий? Я думаю, что когда обнаруживается часть проблемы, которая является скриптом или конфигурацией, она подходит к решению. - person Tanaike; 15.10.2017