编程语言
首页 > 编程语言> > javascript-使用Google应用脚本按日期过滤数组

javascript-使用Google应用脚本按日期过滤数组

作者:互联网

我有一个Google电子表格,它是一个2列表格,在A列上有日期(我确定是日期,并且所有date函数在所有列上都可以正常工作)和在B列文字上.

使用谷歌应用程序脚本,我得到了范围的所有值:

var sheet = SpreadsheetApp.openById(".........");
var ss = sheet.getSheetByName(".......");
var range =ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn());
var data =  range.getValues();

现在我应该有一个二维数组,日期为data [0],文本为data [1]

我可以使用以下方法过滤data [1]上的数组:

var filter = data.filter(function (dataRow) {
return dataRow[1] == 'sometext';
});

我需要的是按某个日期值(例如年,月或周期)过滤data [0]

我试过了:

var filter = data.filter(function (dataRow) {
return dataRow[0].getFullYear == 2016;
});

但是任何类型的日期函数都会给我一个错误,指出无法在对象中找到该函数(例如getFullYear()).

我究竟做错了什么?

感谢您的帮助

最好的祝福

解决方法:

我创建了一个类似的电子表格(第一列带有文本,第二列带有日期)和以下脚本:

function myFunction() {
  var sheet =  SpreadsheetApp.openById("…");
  var ss    = sheet.getSheetByName("testing");
  var range = ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn());
  var data  = range.getValues();

  var filtered = data.filter(function (row) {
    return row[1].getFullYear() === 2016;
  });

  Logger.log(filtered);
}

只要第二列是日期类型(格式→数字→日期),它就可以工作.如果将类型更改为“文字”,则会收到您描述的错误.如果您的代码中没有错误(例如.getFullYear而不是.getFullYear(),因为它是一个函数,而不是属性),那么我认为数据(不是变量,而是电子表格的数据)不是Date类型.

标签:javascript,arrays,google-apps-script
来源: https://codeday.me/bug/20191013/1908097.html