列表框不会将字符串传递给谷歌脚本

时间:2015-03-20 19:05:07

标签: javascript jquery google-apps-script google-sheets

当我从列表框中选择用户时,onChange()事件会触发一个功能。它应该将一个字符串传递给函数。然后代码找到用户的密码并将其返回以进行比较。以下是如果我硬编码用户值的代码,但是当我从列表框中选择它时不能正常工作。

function addClients(clients){
  $('#customer').empty(); 
  $('#customer').append('<option> ---- Choose a user ----</option>');
  for (var i in clients) {
    $('#customer').append('<option>'+clients[i]+'</option>');
    $('#customer').trigger("chosen:updated"); 
  }
} 

getval功能:

function getval(sel){
    var usrpass = google.script.run.getuserpass(sel.value);
    alert(usrpass);
}

code.gs中的函数如下

function getuserpass(userval){
 var usrpass = "";
 var doc = SpreadsheetApp.openById("spreadsheet id");
 var sheet = doc.getActiveSheet();
 var data = sheet.getRange(3, 3, sheet.getLastRow(),5).getValues();; 
 for(n=0;n<data.length;++n){
 // iterate row by row and examine data in column A
 if(data[n][0].toString().match(userval)==userval){ usrpass = data[n][4]};
 }
 return usrpass;
}

为什么返回值以未定义而不是密码的形式返回。

如果我在函数中硬编码用户名并运行函数,那么返回值就是第五列中的值。

1 个答案:

答案 0 :(得分:0)

尝试构建如下代码:

<script>
  function onSuccess(returnVal) {
    alert('Success! ' + returnVal);
  };

  function getval(sel){

    var selectValue = sel.value;
    console.log('selectValue: ' + selectValue);

    google.script.run
      .withSuccessHandler(onSuccess)
      .getuserpass(sel.value);
  };

</script>

您可以遍历对象以查看其中的内容,作为调试测试。

for (var propertyVal in sel) {
  console.log('this property: ' + propertyVal);
  console.log('this value: ' + sel[propertyVal]);
};

看看对象中到底是什么。