Google Scripts / Javascript中的2D数组问题

时间:2017-08-21 21:38:29

标签: javascript arrays google-apps-script

我有一些代码可以从Google表格中检索数据。然后,我将这些数据循环显示仅等于今天日期的日期。我想把这些值放到另一张表中。我可能不明白2D数组究竟是如何工作的...下面是我到目前为止所做的。我知道我的循环只能找到今天的条目。不知道我做错了什么。任何帮助将不胜感激。 n变量返回应该在数组中的正确行数。但是,行数和列数不正确。我正在读取数据FROM的工作表有4列。我只需要其中的3个。

var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Edit Info');
var rows = sheet.getDataRange();
var values = rows.getValues();

Logger.log(values.length)
Logger.log(values[0].length)

var todayValues = [];
var todValues = "";
var rowValues = [];

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
dd = '0'+dd
} 

if(mm<10) {
mm = '0'+mm
}  

today = mm + "/" + dd + "/" + yyyy;
Logger.log("Today: " + today)
var n = 1;
for(var i = 1; i < values.length; i++) {   
var formattedDate = values[i][0];
var newDate = Utilities.formatDate(new Date(formattedDate), "GMT-6", 
"MM/dd/yyyy");
//Logger.log("NewDate: "+newDate)
if(newDate == today){

  //todValues += values[j][0] + "," + values[i][3] + "," + values[i][2];
  todayValues.push(values[i][0], values[i][3], values[i][2]);
  n = n + 1
  Logger.log(values[i][0] + ", " + values[i][3] + ", " + values[i][2])
}
}

Logger.log("N Row Count: " + n) //How many times the date was actually 
found
Logger.log("Rows: " + todayValues.length)
Logger.log ("Columns: " + todayValues[0].length)

1 个答案:

答案 0 :(得分:0)

您是否在脚本编辑器中使用了“调试”选项。如果您还没有,请参阅Troubleshooting page。它比使用日志更容易。

执行此操作时,您应该发现保存到值的检索数据与保存到todayValues的数据不同。简化,它将是这样的:

values  [["A", "B", "C"],["D", "E", "F"]]
todayValues  ["A", "B", "C","D", "E", "F"]

请注意值中的其他方括号。

您希望循环中的代码读取

 todayValues.push([values[i][0], values[i][3], values[i][2]]);