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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过服务器功能将空值返回给Apps Script webapp以获取某个电子表格相关的知识,希望对你有一定的参考价值。

我正在尝试将电子表格中的数据返回到作为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>

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

答案

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

Pattern 1

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

From :
return data;
To :
return JSON.stringify(data);

Pattern 2

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

From :
var data = sheet.getSheetValues(1, 1, maxRows, 10);
To :
var data = sheet.getRange(1, 1, maxRows, 10).getDisplayValues();

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

以上是关于通过服务器功能将空值返回给Apps Script webapp以获取某个电子表格的主要内容,如果未能解决你的问题,请参考以下文章

如何将空值传递给 WebAPI 中的可空类型

Flutter firebase setData()函数在完成异步函数之前将空值分配给字段

Kotlin - 如何将空值传递给片段 newInstance 方法?

将空值传递给 Python 中的存储过程

无法将空值分配给原始类型错误(Spring/Hibernate)

将空值传递给 SVG 路径(使用 d3.js)以抑制丢失数据