Мы узнаем, как создать HTML-форму и подключить ее к электронной таблице Google для сохранения ответов с помощью скрипта Google Apps.

Давайте посмотрим, что нам нужно сделать, чтобы использовать скрипт Google Apps для создания такой формы.

  1. Перейдите в редактор сценариев внутри электронной таблицы.
  2. Создайте файлы index.html, JavaScript.html и Code.gs из пункта меню «Добавить файл».

index.html — в этом файле мы напишем HTML-код для формы.

stylesheet.html — этот файл содержит CSS, необходимые для оформления HTML-формы.

JavaScript.html — в этом файле у нас есть скрипт, который будет обрабатывать входящие и исходящие ответы от скрипта Google Apps.

Code.gs — этот файл является файлом скрипта Google по умолчанию, который будет содержать только скрипт Google Apps для записи ответов формы в электронную таблицу Google.

Выполните следующие действия, чтобы создать HTML-форму и подключение к Google Spreadsheet.

Шаг 1.На странице редакторасоздайте страницу index.html и напишите код HTML для создания формы. См. приведенный ниже пример кода.

<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include("JavaScript"); ?>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" crossorigin="anonymous">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-8" style="background: bisque;">
<div id="output"></div>
<center>
<div>
<h1>-HTML Form-</h1>
<form id="myForm" onsubmit="addRow(this)">
<p class="h4 mb-4 text-center">Details</p>
<div class="form-row">
<div class="form-group col-md-6">
<label for="fyear">Financial Year</label>
<input type="text" class="form-control" id="fyear" name="fyear" placeholder="Financial Year" required>
</div>
<div class="form-group col-md-6">
<label for="source_file">Source File Path</label>
<input type="text" class="form-control" id="source_file" name="source_file" placeholder="Source File Path" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="resume_no">No of Resume to Shortlist </label>
<input type="number" class="form-control" id="resume_to_shortlist" name="resume_to_shortlist" placeholder="" required>
</div>
<div class="form-group col-md-6">
<label for="overall_experience">Overall Experience </label>
<input type="number" class="form-control" id="overall_experience" name="overall_experience" placeholder="Overall Experience" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="primary_skills">Primary Skills</label>
<input type="text" class="form-control" id="primary_skills" name="primary_skills" placeholder="Primary Skills" required>
</div>
<div class="form-group col-md-6">
<label for="skill_looking_for">Skills Looking For</label>
<input type="text" class="form-control" id="skill_looking_for" name="skill_looking_for" placeholder="Skills Looking For" required>
</div>
</div>
<div class="form-group">
<label for="exclude_search">Exclude from Search</label>
<input type="text" class="form-control" id="exclude_search" name="exclude_search" placeholder="Exclude from Search">
</div>
<button type="submit" class="btn btn-primary btn-block">Submit</button>
</form>
<br><br>
</div>
</center>
</div>
</div>
</div>
</body>
</html>

В приведенном выше примере кода у нас есть несколько полей ввода, и мы определили их с атрибутами name, id, кроме того, мы включили JavaScript.html следующим образом ‹?!= include("JavaScript") ; ?›, мы используем такой синтаксис для включения файла.

У нас также есть функция: «addRow(this)» в форме, которая будет использоваться для передачи данных на страницу JavaScript.

Шаг 2: Создайте файл JavaScript.html и напишите свой сценарий для получения данных на основе атрибута имени поля ввода. См. пример кода ниже.

<script>
function preventFormSubmit() {
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function(event) {
event.preventDefault();
});
 }
}
window.addEventListener('load', preventFormSubmit);
function addRow(formObject)
{
google.script.run.withSuccessHandler(updateUrl).withFailureHandler(onFailure).addRecord(formObject);\
}
function updateUrl(url) {
var div = document.getElementById('output');
if(url !=""){
// div.innerHTML =  url;
div.innerHTML = '<div class="alert alert-success" role="alert"> Details have been received successfully! </div>';
document.getElementById("myForm").reset();
}
}
function onFailure(error) {
var div = document.getElementById('output');
// div.innerHTML = error.message;
div.innerHTML = '<div class="alert alert-danger" role="alert"> Something went wrong</div>';
}
</script>

В приведенном выше коде у нас есть функция addRow, которая имеет несколько функций библиотеки Google Script, давайте разберемся с этим.

google.script.run.withSuccessHandler(updateUrl).withFailureHandler(onFailure).addRecord(formObject);

В этом скрипте есть две функции, которые вызываются на основе событий успеха и неудачи выполнения скрипта. Поэтому у нас есть такие функции, как при успешном выполнении будет вызываться функция «updateUrl», а при неудаче — «onFailure». В случае успеха мы отправляем объект формы в файл Google Script, который называется «Code.gs».

Шаг 3. На этом шаге мы обработали то же самое и выполнили задачу так, как хотели бы. Давайте сначала посмотрим пример кода, а затем объяснение.

function doGet(request) {
return HtmlService.createTemplateFromFile('index').evaluate();
}
function include(filename){
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function addRecord(formObject) {
try {
var ss = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID");
var webAppSheet = ss.getSheetByName("Sheet1");
webAppSheet.getRange(2,1,1,webAppSheet.getLastColumn()).setValues([[
formObject.fyear,
formObject.resume_to_shortlist,
formObject.overall_experience,
formObject.primary_skills,
formObject.skill_looking_for,
formObject.exclude_search,
formObject.source_file
]]);
return fileUrl;
} catch (error) {
return error.toString();
 }
}

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

  1. doGet(): эта функция используется для получения ответа и возврата содержимого страницы шаблона HTML.
  2. include(): функция используется для включения файла в наш индексный файл, поскольку это то же самое, что и встраивание файла в ваш основной файл, мы должны следовать этому, чтобы сохранить чистый код и для лучшего понимания для то же самое, когда мы передаем имя файла внутри функции как include("JavaScript.html"), он добавит файл скрипта в файл index.html.
  3. addRecord(): это функция, которая принимает объект формы в том виде, в каком мы определили его в файле JavaScript. В этой функции мы объявили идентификатор Google Spreadsheet и диапазон для сохранения ответа из формы.

Чтобы получить данные формы, мы используем атрибут name поля ввода с formobject следующим образом — скажем, если у вас есть «fyear» — это ваш атрибут имени, тогда мы принимаем его как formObject.fyear, чтобы получить значение этого, аналогично мы будем делать для всех значений, и есть массив, объявленный для приема всех значений в этом.

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

webAppSheet.getRange(2,1,1,webAppSheet.getLastColumn()).setValues([[
formObject.fyear,
formObject.resume_to_shortlist,
formObject.overall_experience,
formObject.primary_skills,
formObject.skill_looking_for,
formObject.exclude_search,
formObject.source_file
]]);

Я надеюсь, что эта статья даст вам больше информации о скриптах Google Apps.

Если вы хотите изучить скрипт Google Apps и автоматизировать Google Workspace? обязательно попробуйте эту электронную книгу на тему Скрипт Google Apps: руководство для начинающих».

Я был бы рад, если бы вы подписались и проголосовали на средней платформе за больше таких обучающих статей. Большое спасибо!