它的工作原理如下:确定刚刚编辑的值是“已完成”或“已取消”。如果为true,请选择上一列中的“Timestamp”值。在名为“mainSheet”的不同选项卡中查找“时间戳”。找到后,将该值写入该行的第59列。代码一直工作到if(sheetCells[i][0]===TimeStamp)
条件,它无法比较单元格并将i的值赋给rowValue。我在循环中运行Logger并且它具有相同的值!我在这里错过了什么吗?
function onEdit(e){
var completed = "Completed";
var cancelled = "Cancelled"
var s = SpreadsheetApp.getActiveSheet();
var value = s.getActiveCell().getValue();
if(value == completed || value == cancelled){
var statusColumn = 59, rowValue=0;
var TimeStamp = SpreadsheetApp.getActiveRange().offset(0,-1).getValue();
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var sheetCells = mainSheet.getDataRange().getValues();
for(var i=1; i<sheetCells.length; i++){
Logger.log(sheetCells[i][0]+" "+TimeStamp);
if(sheetCells[i][0]===TimeStamp){
rowValue = i;
}
}
//sheetCells[rowValue][statusColumn].setValue(value);
Logger.log(rowValue);
}
}
答案 0 :(得分:0)
尝试if(sheetCells[i][0]==TimeStamp)
,因为==运算符将在执行任何必要的类型转换后比较相等性。 ===运算符不会进行转换,所以如果两个值不是同一类型===只会返回false。但是偶数==没有在你的情况下工作。所以,我相信你得到的时间戳和在javascript中应该有比较时间戳的特定方法或你必须使用数学方法计算时间差异然后如果差异为0然后时间戳相同,否则有一些差异