通过服务器功能将空值返回给Apps Script webapp以获取某个电子表格

时间:2018-05-21 23:43:05

标签: html google-apps-script

我正在尝试将电子表格中的数据返回到作为webApp发布的Apps脚本。但是,对于我的一个电子表格(link),返回的数据为null。我在返回之前记录了数据,以确保它不为空,我可以在日志中看到它们。

这是我的代码:

function doGet(){
  return HtmlService.createHtmlOutputFromFile('index');
}

function spreadsheetTest() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1");
  var maxRows = sheet.getMaxRows();
  var data = sheet.getSheetValues(1, 1, maxRows, 10);
  Logger.log(data)
  return data;
}
<html>
<button type="button" onclick="clcked();">Click Me!</button>
<div id="Message"></div>

<script>
  function clcked(){
    google.script.run
      .withSuccessHandler(function(response) {
        console.log(response);
      })
      .spreadsheetTest();
  }
</script>
</html>

任何帮助都将受到高度赞赏。 :)

1 个答案:

答案 0 :(得分:2)

我之前遇到过同样的问题。当具有日期格式的值包含在由data检索的getSheetValues()中时,返回的值将变为空。我认为当值从GAS发送到Javascript时,解析和/或转换日期值时可能会发生此问题。这样,返回null。为了避免这种情况,我认为您的情况有两种模式。请根据您的情况选择其中一个。

模式1

对于函数spreadsheetTest(),修改如下。

来自:
return data;
至 :
return JSON.stringify(data);

模式2

对于函数spreadsheetTest(),修改如下。

来自:
var data = sheet.getSheetValues(1, 1, maxRows, 10);
至 :
var data = sheet.getRange(1, 1, maxRows, 10).getDisplayValues();

如果这些对你的情况没用,我很抱歉。