Google apps script 接受用户的多个输入并添加到新行中的某些单元格

Google apps script 接受用户的多个输入并添加到新行中的某些单元格,google-apps-script,google-sheets,google-spreadsheet-api,Google Apps Script,Google Sheets,Google Spreadsheet Api,我试图在谷歌表单中使用他们的脚本执行以下操作 1) 接受用户的多个输入 2) 将当前最后一行复制/粘贴到下面的新行(最后一行包括我要重复使用的公式) 3) 获取多个输入并在新的最后一行中填写某些单元格 例如,我有一个标签栏:产品、数量、成本、税、发货、购买。产品、数量、成本是用户输入。税收、运输和购买都是公式 我想以一种形式提示用户输入“产品”、“数量”、“成本” 然后我想复制下最后一行,并将“产品”、“数量”、“成本”的结果输入新的最后一行 这是我到目前为止的剧本,我觉得我已经很接近了: fu

我试图在谷歌表单中使用他们的脚本执行以下操作

1) 接受用户的多个输入 2) 将当前最后一行复制/粘贴到下面的新行(最后一行包括我要重复使用的公式) 3) 获取多个输入并在新的最后一行中填写某些单元格

例如,我有一个标签栏:产品、数量、成本、税、发货、购买。产品、数量、成本是用户输入。税收、运输和购买都是公式

我想以一种形式提示用户输入“产品”、“数量”、“成本”

然后我想复制下最后一行,并将“产品”、“数量”、“成本”的结果输入新的最后一行

这是我到目前为止的剧本,我觉得我已经很接近了:

function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Evaluate')
      .addItem('Add New Row', 'addNewRow')
      .addItem('Compare', 'getData')
      .addToUi();
}

var ss = SpreadsheetApp.getActive();

function addNewRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}

function getData() {
  var ui = SpreadsheetApp.getUi();

  var result = ui.prompt(
      'Product',
      ui.ButtonSet.OK_CANCEL);

  var productName = result.getResponseText();

  var sh = ss.getActiveSheet();
  var lRow = sh.getLastRow(), lCol = sh.getLastColumn();

  var productRange = sh.getRange(lRow,1).setValue(productName);

}
我不明白: 1) 如何创建接受多个输入的提示 2) 如何根据列标题将其放置在单元格中(这样似乎更有效)


谢谢。

这是一个如何创建接受多个值的HTML对话框的示例。里面还有其他东西

Code.gs文件:

function doGet()
{
  var html = HtmlService.createHtmlOutputFromFile('index');
  return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)

}

function showDialog()
{
    var ui=HtmlService.createHtmlOutputFromFile('index');
    SpreadsheetApp.getUi().showModelessDialog(ui,'Title');
}

function getData(a)
{
  var ts = Utilities.formatDate(new Date(), "GMT-6", "M/d/yyyy' 'HH:mm:ss");
  a.splice(0,0,ts);
  var ss=SpreadsheetApp.openById('SPREADSHEETID')
  ss.getSheetByName('Form Responses 1').appendRow(a);
  return true;
}

function getURL()
{
  var ss=SpreadsheetApp.openById('SPREADSHEETID');
  var sht=ss.getSheetByName('imgURLs');
  var rng=sht.getDataRange();
  var rngA=rng.getValues();
  var urlA=[];
  for(var i=1;i<rngA.length;i++)
  {
    urlA.push(rngA[i][0]);
  }
  return urlA;
}
函数doGet()
{
var html=HtmlService.createHtmlOutputFromFile('index');
返回html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
函数showDialog()
{
var ui=HtmlService.createHtmlOutputFromFile('index');
SpreadsheetApp.getUi().showModelessDialog(ui,'Title');
}
函数getData(a)
{
var ts=Utilities.formatDate(新日期(),“GMT-6”,“M/d/yyyy”“HH:mm:ss”);
a、 拼接(0,0,ts);
var ss=SpreadsheetApp.openById('SPREADSHEETID'))
ss.getSheetByName('Form Responses 1')。附录行(a);
返回true;
}
函数getURL()
{
var ss=SpreadsheetApp.openById('SPREADSHEETID');
var sht=ss.getSheetByName('imgURLs');
var rng=sht.getDataRange();
var rngA=rng.getValues();
var urlA=[];
对于(var i=1;i
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <div id="data">
    <br />Text 1<input name="t1" type="text" size="15" id="txt1" placeholder="Text 1" />
    <br />Text 2<input name="t2" type="text" size="15" id="txt2" placeholder="Text 2" />
    <br />Text 3<input name="t3" type="text" size="15" id="txt3" placeholder="Text 3" />
    <br />Text 4<input name="t4" type="text" size="15" id="txt4" placeholder="Text 4" />
    <br /><input type="radio" name="Type" value="Member" checked />Member
    <br /><input type="radio" name="Type" value="Guest" />Guest
    <br /><input type="radio" name="Type" value="Intruder" />Intruder
    <br /><input type="button" value="submit" id="btn1" />
    <br /><img id="img1" src="" alt="img1" width="300" />
  </div>
  <div id="resp" style="display:none;">
    <h1>Response</h1>
    <p>Your data has been received.</p>
  </div>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
      $(function() {
        $('#btn1').click(validate);
        $('#txt4').val('');
        $('#txt3').val('');
        $('#txt2').val('');
        $('#txt1').val('')
        google.script.run
          .withSuccessHandler(setURL)
          .getURL();
      });
      function setURL(url)
      {
        $('#img1').attr('src',url[0]);
      }
      function setResponse(a)
      {
        if(a)
        {
          $('#data').css('display','none');
          $('#resp').css('display','block');
        }
      }

      function validate()
      {
        var txt1 = document.getElementById('txt1').value || '';
        var txt2 = document.getElementById('txt2').value || '';
        var txt3 = document.getElementById('txt3').value || '';
        var txt4 = document.getElementById('txt4').value || '';
        var type = $('input[name="Type"]:checked').val();
        var a = [txt1,txt2,txt3,txt4,type];
        if(txt1 && txt2 && txt3 && txt4)
        {
          google.script.run
            .withSuccessHandler(setResponse)
            .getData(a);
            return true;
        }
        else
        {
          alert('All fields must be completed.');
        }
      }

      function loadTxt(from,to)
      {
          document.getElementById(to).value = document.getElementById(from).value;
      }

      function radioValue()
      {
        var radios = document.getElementsByName('genderS');
        for (var i = 0, length = radios.length; i < length; i++) 
        {
          if(radios[i].checked) 
          {
            return radios[i].value;
          }
        }
      }


     console.log('My Code');
   </script>
  </body>
</html>