将数组从html表单传递到gs

时间:2019-03-19 02:19:04

标签: javascript html google-apps-script html-form

我正在使用Google App脚本。

我已经从Google表格中的值创建了下拉框。我的目的是收集一个数组中的selectedIndex(es),将它们作为参数发送到后端,并让它们基于参数从同一个Google表格中输出值。

我能够成功地将下拉框的选定索引数组从html表单传递到后端(code.gs),但是当我尝试使用getRange获取Google表格中单元格的值时和selectedindexs,我总是会遇到这些错误:

  

console.log-在calculateCL上未被捕获(代码:22)

     

Logger.log-能够记录单元格的值,但是当我“返回PTvalue”时,前端将其记录为未定义。

请帮助!

page.html

//gets selected index from dropdown
    var CountryIndex = document.getElementById("menu").selectedIndex;
    var CUTypeIndex = document.getElementById("ListCUTyp").selectedIndex;

//pushes indices into array 
    formArray = [];
    formArray.push(CountryIndex);
    formArray.push(CUTypeIndex);

//array sent to back end within function calculateCL
//on success of calculateCL, run function CLOutput
    google.script.run.withSuccessHandler(CLOutput()).calculateCL(formArray)

//outputs value from GS
    function CLOutput(PTvalue){
                console.log(PTvalue);
                document.getElementById("ListPT").value = PTvalue;
            }

code.gs

//gets value of cell based on selected index array
        function calculateCL(formArray) {
          var PTvalue = sheet.getRange(2+formArray[0], 2+formArray[1]).getValue();
          Logger.log(PTvalue);
          return PTvalue;
        }

2 个答案:

答案 0 :(得分:0)

您的calculateCL有参数,但似乎您使用的是内部没有参数的

google.script.run.withSuccessHandler(CLOutput()).`calculateCL()`

看看您的功能:

function calculateCL(formArray)

答案 1 :(得分:0)

这是不正确的:

 google.script.run
.withSuccessHandler(CLOutput())
.calculateCL(formArray);

这是正确的格式:

google.script.run
.withSuccessHandler(CLOutput)
.calculateCL(formArray)

 function CLOutput(PTvalue){
   console.log(PTvalue);
   document.getElementById("ListPT").value = PTvalue;
 }

这也是正确的

 google.script.run
.withSuccessHandler(function(PTValue){
    console.log(PTvalue);
    document.getElementById("ListPT").value = PTvalue;
})
.calculateCL(formArray)