在两个日期之间从Google电子表格中提取数据

问题描述:

我正在尝试构建一个nodejs应用程序,它将在每周运行一次。它的工作是在上周和今天之间从Google Spreadsheet中获取数据。基本上,我想在上周添加数据。在两个日期之间从Google电子表格中提取数据

我相信这是我要用的:https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet 但是,如果有更好的东西,请告诉我。

我认为SpreadSheet.getActiveSheet().getRange()将返回一个包含所有数据的数组,但我不确定在哪里可以添加某种查询来按日期获取数据。

喜欢的东西

SpreadSheet.getActiveSheet().getRange(date > lastWeek && date < today) 

有什么办法来实现这一点?

+1

我最近做了很多关于谷歌表格API的工作,首先我会说如果没有任何方法可以使用电子表格来存储数据,则可以使用其他方式。其次'getRange()'用于获取单元格范围内的数据,例如。 A4-F17,它不是日期范围。 我不认为你在使用API​​之后可能会有什么后果,你可能需要考虑在你的数据库中存储最后一行下载的地方,然后使用getRange从该行开始。 –

+0

有没有办法知道列的添加日期? –

+0

查看[Google Drive API更改()](https://developers.google.com/drive/v2/reference/changes)或[修订版本()](https://developers.google.com/drive/V2 /参考/修改)。这将是一个更多的工作,但你可能会找到你想要的 –

据我所知,没有办法知道何时添加一行,因为您的范围不起作用。

我会这样做的方式是在每行上添加一个时间戳,并在迭代所有数据时查找适合的值。 (你也可以保留最后一行读取的地方并从那里开始)。

var sheet = SpreadsheetApp.openById(id).getSheetByName(name) 
var data = sheet.getDataRange().getValues(); 
for (var i = 0 ; i < data.length; i++){ 
    if (data[i][index_of_timestamp] < today && data[i][index_of_timestamp] > lastWeek){ 
    realData.push(data[i]); 
    } 
}