服务器功能为某个电子表格返回给 Apps Script webapp 的空值

Him*_*ara 7 html null web-applications google-apps-script

我正在尝试将电子表格中的数据返回到作为 webApp 发布的 Apps 脚本。但是,对于我的其中一个电子表格(链接),返回的数据是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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。:)

Tan*_*ike 18

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

模式一

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

从 :
return data;
Run Code Online (Sandbox Code Playgroud) 到 :
return JSON.stringify(data);
Run Code Online (Sandbox Code Playgroud)

模式2

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

从 :
var data = sheet.getSheetValues(1, 1, maxRows, 10);
Run Code Online (Sandbox Code Playgroud) 到 :
var data = sheet.getRange(1, 1, maxRows, 10).getDisplayValues();
Run Code Online (Sandbox Code Playgroud)

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