Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript var客户=客户表 .getRange(“A:A”) .getValues() .flat()//需要V8;将嵌套数组转换为单个数组 .filter(值=>value);//删除空白 var productsSheet=ss.getSheetByName(“ResourcesDONTTOUCH”); var products=产品表 .getRange(“H:H”) .getValues() .flat() .filter(值=>value); var template=HtmlService.createTemplateFromFile('htmladso'); template.customers=客户;//应该是字符串数组 template.products=产品;//应该是字符串数组 var html=template.evaluate().setWidth(400).setHeight(300); SpreadsheetApp.getUi() .showModalDialog(html,“添加新的常规订单”); } 函数附加(obj){ var ss=SpreadsheetApp.getActiveSpreadsheet(); ss.setActiveSheet(ss.getSheetByName(“常规”)) var sheet=ss.getSheetByName(“常规订单”); 表.附录行([obj.客户,obj.产品,obj.注释]); }_Javascript_Html_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript var客户=客户表 .getRange(“A:A”) .getValues() .flat()//需要V8;将嵌套数组转换为单个数组 .filter(值=>value);//删除空白 var productsSheet=ss.getSheetByName(“ResourcesDONTTOUCH”); var products=产品表 .getRange(“H:H”) .getValues() .flat() .filter(值=>value); var template=HtmlService.createTemplateFromFile('htmladso'); template.customers=客户;//应该是字符串数组 template.products=产品;//应该是字符串数组 var html=template.evaluate().setWidth(400).setHeight(300); SpreadsheetApp.getUi() .showModalDialog(html,“添加新的常规订单”); } 函数附加(obj){ var ss=SpreadsheetApp.getActiveSpreadsheet(); ss.setActiveSheet(ss.getSheetByName(“常规”)) var sheet=ss.getSheetByName(“常规订单”); 表.附录行([obj.客户,obj.产品,obj.注释]); }

Javascript var客户=客户表 .getRange(“A:A”) .getValues() .flat()//需要V8;将嵌套数组转换为单个数组 .filter(值=>value);//删除空白 var productsSheet=ss.getSheetByName(“ResourcesDONTTOUCH”); var products=产品表 .getRange(“H:H”) .getValues() .flat() .filter(值=>value); var template=HtmlService.createTemplateFromFile('htmladso'); template.customers=客户;//应该是字符串数组 template.products=产品;//应该是字符串数组 var html=template.evaluate().setWidth(400).setHeight(300); SpreadsheetApp.getUi() .showModalDialog(html,“添加新的常规订单”); } 函数附加(obj){ var ss=SpreadsheetApp.getActiveSpreadsheet(); ss.setActiveSheet(ss.getSheetByName(“常规”)) var sheet=ss.getSheetByName(“常规订单”); 表.附录行([obj.客户,obj.产品,obj.注释]); },javascript,html,google-apps-script,google-sheets,Javascript,Html,Google Apps Script,Google Sheets,我使用了您的大部分代码,但做了一些更改,如下所述 一般事务: Html: 从列表中选择客户 精选产品 笔记 console.log('Globals'); var期权=; 选项。取消移动(“选择客户”)//我发现将初始值放入数组更容易 //console.log(选项); var期权1=//它们作为打印字符串传递 选项1.取消移位(“选择产品”); //控制台日志(选项1); //增加了这个功能 函数更新选择(vA,id){ var id=id | |“选择客户”; var select=

我使用了您的大部分代码,但做了一些更改,如下所述

一般事务:

Html:


从列表中选择客户
精选产品
笔记


console.log('Globals'); var期权=; 选项。取消移动(“选择客户”)//我发现将初始值放入数组更容易 //console.log(选项); var期权1=//它们作为打印字符串传递 选项1.取消移位(“选择产品”); //控制台日志(选项1); //增加了这个功能 函数更新选择(vA,id){ var id=id | |“选择客户”; var select=document.getElementById(id); 选择.options.length=0;
对于(var i=0;i我使用了您的大部分代码,但做了一些更改,如下所述

一般事务:

Html:


从列表中选择客户
精选产品
笔记


console.log('Globals'); var期权=; options.unshift('Choose a Customer');//我发现将初始值放入数组更容易 //console.log(选项); var options1=;//它们作为打印字符串传递 选项1.取消移位(“选择产品”); //控制台日志(选项1); //增加了这个功能 函数更新选择(vA,id){ var id=id | |“选择客户”; var select=document.getElementById(id); 选择.options.length=0;
对于(var i=0;我会告诉我们发生了什么,并问一个具体的问题。你现在发布的代码有语法错误。没问题,我可以澄清。发布后我做了一些更改。基本上,我从工作表上的范围中提取一个数组,并将其转换为html弹出窗口中的选项。我试图让它返回所选选项和一位tex然后我将其写入工作表上的新行。我已更新了原始帖子。以帮助澄清和清理该片段。告诉我们发生了什么,并问一个具体问题。您现在发布的代码有语法错误。我可以澄清没有问题。我在发布后做了一些更改。基本上,我从工作表上的范围中提取数组,然后继续将它们转换为html弹出窗口中的选项。我试图使其返回所选选项和文本位,然后将其写入工作表的新行。我已更新了原始帖子。为了帮助澄清和清理该片段。@DrJekyll_XYZ-Ideas?是:定义客户!在将其附加到tem之前,请仔细检查客户设置为什么plate..如果您想在模板中检查,我发现最简单的方法是将其转储到HTML元素中进行检查,如
。但是如果您认为它在模板中未定义,这意味着我们没有将其传递给模板,或者我们传递的内容未定义,请在模板之前记录并查看。我可能需要我的手拿着一个这里是tle。我只是作为一种爱好来做这件事。在你推荐服务器端代码之前,我所做的就是将一个单元格范围的值拉入一个名为customers的变量中。在设置该变量之前,我应该先转换这个值吗?@DrJekyll_XYZ-好,完成。编辑我的答案以显示我对如何获取值的最佳猜测。YMMV根据你的床单的确切形状是这样的……我只是假设客户中的“A:A”是一张名单,而“H:H”“在产品中”是一个您假设正确的产品名称列表。我仍然收到错误信息,说“客户未定义”。我正在查看脚本。我真的不明白它是如何定义的。我们说的是“客户=a:a”。我知道我在这方面学习有点慢。@DrJekyll_XYZ-我确实用这些名称设置了表单,并在显示的代码。检查打字错误,注意编辑器中的颜色突出显示,使用搜索工具,使用调试器。你会得到它。@DrJekyll_XYZ-Ideas?是的:定义客户!在将客户附加到模板之前,仔细检查客户被设置为什么。如果你想在模板中检查,我会找到最简单的方法s将其转储到HTML元素中以供检查,如
。但是如果您认为它在模板中未定义,这意味着我们没有将其传递给模板,或者我们传递的内容未定义,请在模板之前记录它,然后查看。我可能需要在这里握住一点手。我只是作为一种爱好来做这件事。我在服务器端c之前所做的一切ode建议将一个单元格范围内的值拉入一个名为customers的变量中。在设置该变量之前,我是否应该转换此值?@DrJekyll_XYZ-好的,完成。编辑我的答案以显示如何获取值的最佳猜测。YMMV根据您的工作表的确切形状……我只是假设“a:a”在客户中有一个姓名列表和“H:H”“在产品中”是一个您假设正确的产品名称列表。我仍然收到错误信息,说“客户未定义”。我正在查看脚本。我真的不明白它是如何定义的。我们说的是“客户=a:a”。我知道我在这方面学习有点慢。@DrJekyll_XYZ-我确实用这些名称设置了表单,并在显示的代码。检查拼写错误,注意编辑器中的颜色突出显示,使用t
function addSO() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName("Sheet1");//modified sheet name 
  var values=sh1.getRange(1,1,sh1.getLastRow(),1).getValues().map(function(r){return r[0]});
  var sh2=ss.getSheetByName("Sheet2");//modified sheet name
  var values1=sh2.getRange(1,8,sh2.getLastRow(),1).getValues().map(function(r){return r[0]});
  var t=HtmlService.createTemplateFromFile('ah3');//modified html file name
  t.values='['+ values.join(',') + ']';//modified from original passwed as printed strings not arrays
  t.values1='['+ values1.join(',') + ']';//modified from original
  var html=t.evaluate().setWidth(400).setHeight(300);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Add New Standing Order');//made modeless because it's easier for me to debug as I have debug tools avialable in sidebar
}

//Write Standing Order
function writeSO(obj) {
    var ss=SpreadsheetApp.getActive();
    var sheet = ss.getSheetByName("Sheet3"); 
    sheet.appendRow([obj.selectCustomer, obj.selectProduct, obj.notes]);
}  
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
    <base target="_top">
  </head>
  <body>
 <form>
 <H2>Select Customer from list</H2>
 <select id="selectCustomer" name="selectCustomer"></select>
<H2>Select Product</H2>
 <select id="selectProduct" name="selectProduct"></select>
<H2>Notes</H2>
<input type="text" size="50" name="notes" id="notes">
<br>
<br>
     <input type="button" value="OK" onClick="submitorder(this.parentNode);" />
</form>
<script>
  console.log('Globals');
  var options= <?!= values ?>;
  options.unshift('Choose a Customer');//I find this easier to put initial value in the array
  //console.log(options);
  var options1= <?!= values1 ?>;//these are passed as printed strings
  options1.unshift('Choose a Product');
  //console.log(options1);

  //added this function
  function updateSelect(vA,id){
      var id=id || 'selectCustomer';
      var select = document.getElementById(id);
      select.options.length = 0; 
      for(var i=0;i<vA.length;i++) {
        select.options[i] = new Option(vA[i],vA[i]);
      }
  }

//Runs after html is loaded in the page
window.onload=function() {
  updateSelect(options,'selectCustomer');
  updateSelect(options1,'selectProduct');
}

function submitorder(obj) {
 google.script.run
   .withSuccessHandler(function(){google.script.host.close();})
   .writeSO(obj);
      }
</script>
</body>
 </html>