在GoogleWebApp脚本中,Cant似乎无法将多个参数从JS传递到HTML

Cant seem to pass more than one parameter from JS to HTML in Google Web App Script

本文关键字:参数 JS HTML 脚本 GoogleWebApp Cant      更新时间:2023-09-26

我正在学习如何创建一个非常基本的谷歌Web应用程序,尝试从一个函数中获取两个变量(谷歌表单中的第一个名称和姓氏),并将它们返回到HTML代码中以显示在我的页面上。它只抓取一个变量,但当我尝试返回2时,一切都变得一团糟。如有任何帮助,我们将不胜感激。

我的JS代码:

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Index')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
};
function grabUser(){
  var userEmail = Session.getActiveUser().getEmail();
  var SpreadsheetId = '1xxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxx'; 
  var SheetName = 'MASTER';
  var EmailCol = 7; //keep not that column A=0, B=1...
  var FNameCol = 1;
  var SNameCol = 0;
   // Log the email address of the person running the script.
Logger.log(userEmail);
  var ss = SpreadsheetApp.openById(SpreadsheetId);
  var sheet = ss.getSheetByName(SheetName);
  var data = sheet.getDataRange().getValues(); // read all data in the sheet 
  for(n=0;n<data.length;++n){ // iterate row by row and examine data in col 
 if(data[n][EmailCol].toString()==userEmail){ var FName = data[n][FNameCol];
                                            var SName =data[n][SNameCol]};// return the values of these cells 
 }
  Logger.log(FName);
  Logger.log(SName);
return (FName, SName);
};

然后是我的HTML:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function onSuccess(FName,SName) {
        var div = document.getElementById('output');
        div.innerHTML = 'Hello ' + FName + 
           ' Your surname is '+SName;
      }
      google.script.run.withSuccessHandler(onSuccess).grabUser();
    </script>
  </head>
  <body>
    <div id="output"></div>
  </body>
</html>

从服务器返回Web应用程序的函数定义的参数列表中不允许有两个参数。

有关此方面的文档,请参阅:

应用程序脚本文档-参数和返回值

报价:

合法参数和返回值是JavaScript基元,如Number、Boolean、String或null,以及由基元、对象和数组组成的JavaScript对象和数组。

要将多条信息传递回,您可能需要在您的案例中使用一个数组:

return [FName, SName];

对于更多的数据,一个好的选择是将所有数据放入一个对象中,然后将该对象转换为字符串:

var myObject = {'one':'value','two':'value'};
myObject = JSON.stringify(myObject);
return myObject;