繁体   English   中英

htmlService:google.script.run无法识别gs函数

[英]HtmlService: google.script.run not recognizing gs function

我目前正在尝试将值列表从Google表格传递到HtmlService,让用户选择一个选项,最后将其传递回.gs脚本。 我一直使用这两个链接作为参考:1. Google文档 2. 堆栈溢出示例

运行代码时,我查看了控制台,并注意到以下错误: VM3051:4 Uncaught TypeError: google.script.run.withSuccessHandler(...).getVersionArray is not a function似乎getVersionArray()没有正确传递。 当从该google.script.run调用的其余部分中删除此函数时,错误消失了。

另外,对于每个链接,我都尝试使用模板中的代码,甚至从未弹出窗口,因此我一直以Google文档链接中的HtmlOutput示例作为起点。 我也尝试了带有和不带有SandboxMode声明的代码。

gs代码:

function bugPieChart() {
  getVersionArray();
  openDialog();

function getVersionArray() {

  var ss = SpreadsheetApp.getActive();
  var valuesR = ss.getSheetByName("report").getRange('R1:R').getValues();
  var valuesS = ss.getSheetByName("report").getRange('S1:S').getValues();

  var versionRSArray = [];

  for (var i = 0; i < valuesR.length; i++) {
    versionRSArray.push(valuesR[i][0]);
  }

  for (var i = 0; i < valuesS.length; i++) {
    versionRSArray.push(valuesS[i][0]);
  }

  versionRSArray.sort();

  var uniqueArray = [];

  uniqueArray.push(versionRSArray[0]);

  for (var i in versionRSArray ) {  
    if((uniqueArray[uniqueArray.length-1]!=versionRSArray[i]) && (versionRSArray[i] !== "")) {
      uniqueArray.push(versionRSArray[i]);
    }
  }
  return uniqueArray;
}

function openDialog() {    
  var html = HtmlService.createHtmlOutputFromFile('index');
  SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title');
  var htmlOutput = html.setSandboxMode(HtmlService.SandboxMode.NATIVE);
  return htmlOutput;  
}

}

index.html的:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script>
      $(function() {
        google.script.run.withSuccessHandler(buildOptionsList)
            .getVersionArray();
      });
      function buildOptionsList(uniqueArray) {
        var list = $('#optionList');
        list.empty();
        for (var i = 0; i < uniqueArray.length; i++) {
          list.append('<option value="' + uniqueArray[i].toLowerCase() + '">' + uniqueArray[i] + '</option>');
        }  
      }      
    </script>
  </head>
  <body>
    <select id="optionList">
      <option>Loading...</option>    
    </select> 
    <input type="button" value="Close" onclick="google.script.host.close()" />
  </body>
</html>

我认为您只是在上面的函数上缺少了右括号。

function bugPieChart() {
  getVersionArray();
  openDialog();
}

function getVersionArray() {

  var ss = SpreadsheetApp.getActive();
  var valuesR = ss.getSheetByName("report").getRange('R1:R').getValues();
  var valuesS = ss.getSheetByName("report").getRange('S1:S').getValues();

  var versionRSArray = [];

  for (var i = 0; i < valuesR.length; i++) {
    versionRSArray.push(valuesR[i][0]);
  }

  for (var i = 0; i < valuesS.length; i++) {
    versionRSArray.push(valuesS[i][0]);
  }

  versionRSArray.sort();

  var uniqueArray = [];

  uniqueArray.push(versionRSArray[0]);

  for (var i in versionRSArray ) {  
    if((uniqueArray[uniqueArray.length-1]!=versionRSArray[i]) && (versionRSArray[i] !== "")) {
      uniqueArray.push(versionRSArray[i]);
    }
  }
  return uniqueArray;
}

function openDialog() {    
  var html = HtmlService.createHtmlOutputFromFile('index');
  SpreadsheetApp.getUi().showModalDialog(html, 'Dialog title');
  var htmlOutput = html.setSandboxMode(HtmlService.SandboxMode.NATIVE);
  return htmlOutput;  
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM