我尝试编写一些代码来检查电子表格列中的值,看看它们是否是有效日期。但是,即使我在格式设置为日期的单元格中输入日期,它似乎也不会将其识别为日期。当我调试日期对象被列为"新日期"但如果我试图让Logger得到getDate(),我会收到以下错误:
TypeError:找不到对象中的函数getDate Sat Jun 05 2010 01:00:00 GMT + 0100(BST)。 (第15行,文件" myCode")
我可以通过调用' new Date()'将我的对象设置为日期。这意味着它们被识别为日期,但这会将所有对象更改为日期,无论它们是否应该。
这是我的代码:
function onMyPress(){
var sheet = SpreadsheetApp.getActive().getActiveSheet()
var myRange = sheet.getRange(2,2,8,1)
var myValues = myRange.getValues()
for (i=0; i<8; i++){
var testDate = myValues[i]
if (isDate(testDate)) {sheet.getRange(i+2,3,1,1).setValue("Date")
}
else{
sheet.getRange(i+2,3,1,1).setValue("Not Date")
}
Logger.log(testDate.getDate())
}
}
function isDate(testDate) {
if (Object.prototype.toString.call(testDate) !== "[object Date]") {
return false;
}
else {
return true;
}
}
谢谢你的期待。
答案 0 :(得分:0)
&#34;在对象&#34;中找不到函数getDate表示您在不是Date对象的对象上调用getDate()。
我在猜测&#34; testDate&#34;是一个String对象?如果您单步执行代码,它是否会进入&#34; else&#34;条款?
你需要:
请参阅此处的工作示例: https://jsfiddle.net/uyowax8o/
// Convert to Date object
var realDate = new Date(testDate);
// This now works
alert(realDate.getDate());
答案 1 :(得分:0)
问题是getValues()返回一个2D数组,你的脚本分配一个“行”(a
JavaScript数组)而不是下一行的testDate
的单元格值(JavaScript字符串,日期等)
var testDate = myValues[i]
另一种方法是用以下内容替换上面的代码行:
var testDate = myValues[i][0]
假设您的日期在第一列。