此代码的作用是根据输入(日期)标识数组的行,并返回与输入日期关联的值。
但是,此for循环不起作用,因为它不遵守if条件,并且始终返回数组的最后一行。
function viewData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Overall Cashflow"); //Data entry Sheet
var datasheet = ss.getSheetByName("Cashflow Tracker Data"); //Data Sheet
var data = datasheet.getDataRange().getValues();
var date = formSS.getRange("H5").getDisplayValue();
for (var i = 0; i < data.length; i++){
if (data[i][0] == date) {
break;
}
var oldinflow = data[i][1];
var oldoutflow = data[i][2];
}
formSS.getRange("H8").setValue(oldinflow);
formSS.getRange("H11").setValue(oldoutflow);
}
答案 0 :(得分:1)
您需要获取日期对象的 valueOf()。
尝试一下:
function viewData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Overall Cashflow"); //Data entry Sheet
var datasheet = ss.getSheetByName("Cashflow Tracker Data"); //Data Sheet
var data = datasheet.getDataRange().getValues();
var date = formSS.getRange("H5").getValue().valueOf();
for (var i = 0; i < data.length; i++){
if (data[i][0].valueOf() == date) {
break;
}
var oldinflow = data[i][1];
var oldoutflow = data[i][2];
}
formSS.getRange("H8").setValue(oldinflow);
formSS.getRange("H11").setValue(oldoutflow);
}
答案 1 :(得分:0)
getValues()
可能为包含“日期”的单元格返回Date对象,另一方面,getDisplayValue()
将返回一个字符串。这可以解释为什么(data[i][0] == date
无法正常工作。
要防止可能出现的快速且肮脏的解决方案足够好,请使用getValues()
,而不要使用getDisplayValues()
。