listbox不会将字符串传递给google脚本

listbox does not pass string to google script

本文关键字:google 脚本 字符串 listbox      更新时间:2023-09-26

当我从列表框中选择一个用户时,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);
}

代码.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;
}

为什么返回值返回为未定义而不是密码。

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

试着这样构建代码:

<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]);
};

看看这个物体到底是什么。