#google-apps-script
#google-приложения-скрипт #google-forms
Вопрос:
Мне нужно разработать форму управления запасами, в которой пользователь будет указывать количество поступающих на склад и покидающих его запасов. Поскольку в один момент времени из склада обмениваются несколько типов продуктов (SKU) в разном количестве. Итак, в настоящее время в Google forms я могу сделать только одну запись на серверной странице. Я хочу создать форму, в которой пользователь может добавлять несколько данных SKU с их соответствующими количествами в форме, которая будет создавать разные строки для каждого из них на серверной странице Google forms. Кто-нибудь может подсказать мне, как это можно сделать напрямую или с помощью Google Apps Script.
Комментарии:
1. Вы не можете сделать это через формы, но вы могли бы создать пользовательский интерфейс с помощью HtmlService developers.google.com/apps-script/guides/html . Вы могли бы сделать это в виде пользовательского диалога электронной таблицы или боковой панели или через веб-приложение. Опция электронной таблицы требует, чтобы пользователь открыл электронную таблицу и ввел данные в пользовательскую форму. Опция веб-приложения позволяет сохранять электронную таблицу на расстоянии вытянутой руки от пользователя, но может обновляться с помощью пользовательского ввода. Вы сами решаете, что лучше для вашей организации.
2. хорошо, я думаю, это было бы полезно. Спасибо за совет, я посмотрю на это. 🙂
Ответ №1:
Вот простой пример создания таблицы и последующей отправки результатов в электронную таблицу Google. Вам нужно взглянуть на эти ссылки Google. Мой пример запускается из пункта меню электронной таблицы, но его так же легко можно запустить из веб-приложения.
https://developers.google.com/apps-script/guides/html/
https://developers.google.com/apps-script/guides/html/reference/run
Code.gs
function test() {
try {
var html = HtmlService.createTemplateFromFile("HTML_Table").evaluate();
SpreadsheetApp.getUi().showModelessDialog(html, "Table");
}
catch(err) {
Logger.log(err);
}
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
function addRows(values) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.getRange(sheet.getLastRow() 1,1,values.length,values[0].length).setValues(values);
}
HTML_Table.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<?!= include('CSS_Table'); ?>
</head>
<body>
<table id="tableRows">
<thead>
<tr>
<th>SKU</th>
<th>Description</th>
<th>Quantify</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
</tr>
<tr>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
</tr>
<tr>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
</tr>
<tr>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
</tr>
<tr>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
<td><input class="inputCell" type="text"></td>
</tr>
<tbody>
</table>
<div class="buttonBar">
<input class="inputButton" type="button" value="Submit" onclick="buttonClick(this)">
<input class="inputButton" type="button" value="Cancel" onclick="buttonClick(this)">
</div>
<?!= include('JS_Table'); ?>
</body>
</html>
JS_Table.html
<script>
function buttonClick(button) {
if( button.value === "Submit" ) {
var values = [];
var table = document.getElementById("tableRows");
for( var i=1; i<table.rows.length; i ) {
values.push([]);
var row = table.rows[i];
for( var j=0; j<row.cells.length; j ) {
var cell = row.cells[j].firstChild.value;
values[i-1].push(cell);
}
}
google.script.run.addRows(values);
google.script.host.close();
}
else {
if( confirm("Exit without saving?") ) google.script.host.close();
}
}
</script>
CSS_Table.html
<style>
.inputCell { float: left; width: 110px; }
.inputButton { float: left; width: 50%; }
</style>