首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在工作表脚本编辑器中异步加载Google Apps脚本和HTML模板

在工作表脚本编辑器中异步加载Google Apps脚本和HTML模板
EN

Stack Overflow用户
提问于 2019-02-21 02:23:30
回答 1查看 401关注 0票数 0

我正在尝试将数据异步加载到Google脚本编辑器中的HTML文件。

我当前的输出如下:

代码语言:javascript
复制
<ul id="cats">              
<?
var cat = BASIC_DATA.categories;
for(var i=2;i<cat.length;i++){
var categoryName = cat[i][0];
var categoryIcon = ICON[cat[i][0]];
var categoryNumb = cat[i][1];
?>
<li name="<?=categoryName?>" type="category"><span class="icon" style="background-position:<?=categoryIcon?>;"></span><span class="title"><?=categoryName?></span><?='('+categoryNumb+')'?></li>
<?
}
?>
</ul>

我试图实现的是以下内容,但使用谷歌建议的方法在这里HTML Service: Best Practices

代码语言:javascript
复制
  $(function() {
  google.script.run.withSuccessHandler(showThings)
      .getLotsOfThings();
});


  function showThings(cat) {
  var list = $('#cats');
  var cat = BASIC_DATA.categories;
  var categoryName = cat[i][0];
  var categoryIcon = ICON[cat[i][0]];
  var categoryNumb = cat[i][1];
  list.empty();
  for (var i = 0; i < cat.length; i++) {
  list.append('<li name="' + categoryName + '" type="category"><span class="icon" style="background-position:' + categoryIcon + '"></span><span class="title">' + categoryName + '</span>(' + categoryNumb + ')</li>');
  console.log(list);
  }
  }

到目前为止,我的列表是空的,并且在控制台中收到错误

代码语言:javascript
复制
TypeError: google.script.run.withSuccessHandler(...).getLotsOfThings is not a function

下面是我在Code.gs中的getLotsOfThings()函数

代码语言:javascript
复制
    function getLotsOfThings(){
  var tabSheetCategories = SpreadsheetApp.openById(SHEET_ID).getSheetByName(CATEGORIES);
  var tabSheetAbout = SpreadsheetApp.openById(SHEET_ID).getSheetByName(ABOUT_DATA);
  var tabSheetHelp = SpreadsheetApp.openById(SHEET_ID).getSheetByName(HELP_DATA);
  BASIC_DATA = {
    "tab_about" : getValue(tabSheetAbout,"A2"),
    "tab_help": getValue(tabSheetHelp,"A2"),
    "categories": tabSheetCategories.getDataRange().getValues()
  };
  return false; 
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 03:03:53

代码语言:javascript
复制
function getLotsOfThings(){
  var tabSheetCategories = 
  SpreadsheetApp.openById(SHEET_ID).getSheetByName(CATEGORIES);
  var tabSheetAbout = SpreadsheetApp.openById(SHEET_ID).getSheetByName(ABOUT_DATA);
  var tabSheetHelp = SpreadsheetApp.openById(SHEET_ID).getSheetByName(HELP_DATA);
  var BASIC_DATA = {
    "tab_about" : getValue(tabSheetAbout,"A2"),
    "tab_help": getValue(tabSheetHelp,"A2"),
    "categories": tabSheetCategories.getDataRange().getValues()
  };
 return BASIC_DATA; //Return the data to the client-side.
}

HTML客户端代码和服务器端代码(Code.gs)分别运行。我们必须将一些东西回传给客户端。现在我们有了一个对象客户端,我们必须处理它...

代码语言:javascript
复制
  function showThings(basicData) {
  var list = $('#cats');
  //var cat = BASIC_DATA.categories; //BASIC_DATA doesn't exist client-side, it's now passed in as 'basicData'
  Logger.log(JSON.toString(basicData)); //This is the data that has been passed in. It is a JSON object. You CANNOT use variables from the server-side script, only what hav been passed over.
  var cat = basicData.categories;
  //Do something with categories data...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54792943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档