#google-apps-script #google-sheets
#google-apps-script #google-таблицы
Вопрос:
Я ищу способ разрешить вводить имена из электронной таблицы только в веб-приложение Google Script. У меня уже есть функция в приложении, которая называется автозаполнением, которая позволяет пользователю вводить имя, а под вводом появляется выпадающий список, предлагающий возможные значения для текстового поля. Это те же имена, которые я хочу разрешить вводить только в текст и, следовательно, отправлять вместе с формой. Прямо сейчас я уже могу извлекать имена из электронной таблицы, поскольку я делаю это с помощью функции автозаполнения.
Например, если у меня в электронной таблице есть Джек и Джилл, как я могу запретить кому-либо вводить Джона в форму?
Комментарии:
1. Я думаю, что вам следует начать с чтения проверки формы на стороне клиента
2. @pguardiario у меня 80 студентов, так что для выпадающего списка этого было бы много, поэтому мне действительно понравилась функция автозаполнения. Вот что такое функция автозаполнения ссылка
Ответ №1:
Вот как может выглядеть onsubmit:
JS:
var validOptions = ['John', 'Mary']
var formCallback = function(){
if(validOptions.indexOf($('input#myInput').val()) === -1){
alert('Wrong!')
return false
}
return true
}
HTML:
<form onsubmit="formCallback()">
<input id="myInput">
</form>
Ответ №2:
Это позволит вам отправлять только те слова, которые находятся в столбце 1 листа 1.
HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<form>
<input type="text" id="txt"name="text" oninput="checkWord();" />
<br /><input type="button" id="sub" value="Submit" onClick="saveText(this.parentNode);" disabled />
</form>
<script>
var wA;
$(function(){
google.script.run
.withSuccessHandler(function(obj){
wA=obj;
})
.getWords();
});
function checkWord() {
$('#sub').attr("disabled",true);
var word=$('#txt').val();
//console.log(wA);
if(wA.indexOf(word)!=-1) {
$('#sub').attr('disabled',false);
}
}
function saveText(obj) {
google.script.run.saveWord(obj);
}
</script>
</body>
</html>
gs:
function getWords() {
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Sheet1');//Sheet1
const rg=sh.getRange(1,1,sh.getLastRow(),1);//column1
const vs=rg.getValues().map(function(r){return r[0];});
return vs;
}
function saveWord(obj) {
SpreadsheetApp.getActive().toast(obj.text);
}
//Using a dialog instead of a webapp
function showMyDialog() {
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutputFromFile('ah1'), 'Submit Dialog');
}