我有一个 uiApp,它可以根据电子表格数据创建表格 View ,但我在处理日期列中的空单元格时遇到困难。
基本上,一些电子表格单元格是可选的,我还没有弄清楚如何在表中不添加(或空)值。现在,如果我将列值设置为:
projectDataRaw[i][projectDataKeys[j]]= new Date(); // inserting dummy data
但是,当我使用时,我也想将表格 View 中的这些单元格留空:
projectDataRaw[i][projectDataKeys[j]]= null; //
或者它的一些变体,它会出错,因为列类型设置为 DATE。 我可以转换为字符串,但我有点希望能够在日期值可用时相互比较。
-- TableView 和空数据的问题示例 --
// load data from sheet
var _PMsheet = "sheet key";
var sSheet = SpreadsheetApp.openById(_PMsheet);
var projectData = sSheet.getRangeByName("ProjectDateCol").getValues();
var projectDataTable = Charts.newDataTable();
projectDataTable.addColumn(Charts.ColumnType.DATE, "Date Column");
for (var i=0; i < projectData.length; i++) {
if (projectData[i] == undefined || projectData[i] == "undefined") {
projectDataTable.addRow([null]);// Object type does not match column type.
// null fails, "undefined" fails, "" fails, [] fails
}
else {
projectDataTable.addRow([projectData[i]]); // this cell has a valid date obj
}
}
最佳答案
我创建了一个简单的脚本,它将 null 写入 A1 单元格,将当前日期写入 A2 单元格。完整的 A 列被验证为日期时间。脚本执行后,单元格 A1 为空,即使它之前包含过值,并且没有任何警告或错误消息。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var rangeValues = [[null], [new Date()]];
sheet.getRange("A1:A2").setValues(rangeValues);
}
如果此示例对您没有帮助,请发布尽可能小的工作脚本,该脚本不会按您的预期工作。
根据作者的说明进行更新:我编写了一个简单的脚本,试图找到问题原因并找到解决方法。代码如下。如果取消注释 data.addRow(['', 2.0]);
行,则 addRow
方法会抛出异常。这是预期的行为。如果取消注释 data.addRow([null, 3.0]);
行,则 chart.setDataTable(data)
行会引发异常。从我的 Angular 来看,这种行为是不正确的,我认为有必要向issue tracker报告问题。 .
还有一个解决方法,可以使用 DataTableBuilder.setValue方法。代码演示了这一点。
顺便说一句,文档中的DataTableBuilder.setValue
描述不正确。它不包含 column
参数。这是问题跟踪器的一个主题。
function doGet(e) {
var app = UiApp.createApplication();
var chart = Charts.newTableChart();
var data = Charts.newDataTable();
data.addColumn(Charts.ColumnType.DATE, 'Date');
data.addColumn(Charts.ColumnType.NUMBER, 'Value');
data.addRow([new Date(), 1.0]);
// data.addRow(['', 2.0]); // throws the "Object type does not match column type" exception in this line.
// data.addRow([null, 3.0]); // throws the "We're sorry, a server error occurred. Please wait a bit and try again" exception in the "chart.setDataTable(data)" line.
data.setValue(1, 1, 3.0);
chart.setDataTable(data);
app.add(chart.build());
return app;
}
关于javascript - 在 DATE 验证列中创建空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363930/