在经过DATE验证的列中创建null值
Creating a null value in a DATE validated column
我有一个uiApp,它正在从电子表格数据创建表视图,但我很难处理日期列中的空单元格。
基本上,一些电子表格单元格是可选的,我还没有弄清楚如何在表中不输入(或空值)。现在,如果我将列值设置为:,它就会工作
projectDataRaw[i][projectDataKeys[j]]= new Date(); // inserting dummy data
但是,当我使用时,我也想在表视图中保留这些单元格为空
projectDataRaw[i][projectDataKeys[j]]= null; //
或者它的一些变体,它会出错,因为列类型设置为DATE。我可以转换为字符串,但我有点希望能够在日期值可用时相互比较。
--表视图和空数据问题示例--
// 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)
行将引发异常。从我的角度来看,这种行为是不正确的,我认为有必要向问题跟踪器报告问题。
此外,还可以使用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函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- onkeyup无法动态创建多个文本区域
- 数组在递归方法中设置为null
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何访问声音管理器2创建的声音对象
- 在经过DATE验证的列中创建null值
- 创建一个24的数组,其中奇数为null
- 在不使用object.Create的情况下创建具有null原型的javascript对象
- 在创建用户时保持为null
- 动态创建的 iFrame 在从 JQuery 加载的页面调用时为 null
- AJAX 创建的输入元素的值在提交时变为 null
- Javascript 错误“Null 不是对象”,带有动态创建的 html 表
- 将函数原型设置为null对新创建的javascript对象没有影响
- HTML已创建,但style = null
- Javascript中的Object.create(null) &创建新的顶级对象
- 如果搜索新创建的元素,getElementById总是返回null
- 为iframe获取对象null.使用jsdom和所需选项创建iframe
- React.createElement:类型不应为null或未定义.创建/渲染组件时