Как получить несколько записей строк через одну форму Google? - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно спроектировать форму управления запасами, в которой человек будет входить в запас, входящий и выходящий из склада.Поскольку в определенный момент времени из склада происходит обмен несколькими видами продукции (SKU) в разном количестве.Поэтому в настоящее время в формах Google я могу сделать только одну запись в бэкэнд-листе.Я хочу создать форму, в которой пользователь может добавить несколько данных SKU с их соответствующими количествами в форму, которая будет составлять разные строки для каждого на внутреннем листе форм Google.Кто-нибудь может подсказать мне, как это можно сделать напрямую или через Google Apps Script.

1 Ответ

0 голосов
/ 06 апреля 2019

Вот простой пример создания таблицы и последующей отправки результатов в электронную таблицу Google.Вам нужно взглянуть на эти ссылки Google.Мой пример запускается из пункта меню Spreadsheet, но его также легко можно запустить из веб-приложения.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...