首页 > 解决方案 > 在 HTML 和 Google Apps 脚本之间传递和返回数组

问题描述

我正在尝试使用 Google Apps 脚本和 HTML 为 Google 表格创建搜索栏。本质上,我从表单中获取用户的搜索输入(姓名、日期和关键字)并将其传递给我的 GScript 文件以进行搜索。我想要一个索引数组,其中包含与搜索条件匹配的工作表行。我知道脚本的实际搜索部分有效;但是,当将整数数组传递回 HTML 时,我的问题就出现了。

现在,我拥有它,以便在代码的 HTML 端初始化一个空数组并将其传递给 GScript。它应该返回数组,然后我检查数组的长度是否为空。但是,我收到一条错误消息:“无法从 null 读取属性“长度”。”

function gatherSearch() {

      clearErrorWarnings();

      var responsible = document.getElementById('responsible').value;
      var datefrom = formatDate(document.getElementById('datefrom').value);
      var dateto = formatDate(document.getElementById('dateto').value);
      var description = document.getElementById('description').value;
      var searchRowMatch = [];


      if(checkValidSearch(responsible, datefrom, dateto, description)) {
        searchRowMatch = google.script.run.basicSearch(responsible, datefrom, dateto, description, searchRowMatch);
        if(searchRowMatch.length == 0) {
          noSearchMatch();
        }
      }
    }

我知道 GScript 与 HTML 或类似的东西异步运行有什么问题?任何指向正确方向的指针或有关如何解决此问题的解释都会很棒:) 谢谢!

标签: htmlarraysgoogle-apps-script

解决方案


编辑:非常简单的修复,只是添加了 withSuccessHandler() 标记

if(checkValidSearch(responsible, datefrom, dateto, description)) {
  google.script.run.withSuccessHandler(createTable).basicSearch(responsible, datefrom, dateto, description, searchRowMatch);
}

推荐阅读