如何使用Google SpreadSheet API通过最新日期检索行?

时间:2017-06-07 18:02:19

标签: google-apps-script google-sheets

我有一个存储一些数据的大型Google SpreadSheet文档,我需要使用Google SpreadSheet REST API从中检索特定行。

假设我们有以下测试数据:

If ( ( Test-Path $jedit) ) {
    Function Start-JEdit() {
        Start-Process -FilePath javaw -ArgumentList ( '-jar',"$jEdit", '-settings="$($mydriveroot + "jEdit\settings")"' ) -RedirectStandardOutput "$JEditLogs\console.out" -RedirectStandardError "$JEditLogs\console.err"
    }
New-Alias -Name jedit  -Force Start-JEdit  -Description "Start JEdit programmers text editor" 
}

我需要检索具有最新日期的行,例如:

ID | Name | Date
-----------------
1  | Erik | 07.06.2017
2  | Anna | 07.06.2017
3  | Kirk | 07.06.2017
4  | Erik | 06.06.2017
5  | Anna | 06.06.2017
6  | Kirk | 06.06.2017
....

我怎样才能做到这一点?

修改

official doc我发现我可以通过以下请求检索范围:

1  | Erik | 07.06.2017
2  | Anna | 07.06.2017
3  | Kirk | 07.06.2017

但这不适合我,因为我需要按最大日期过滤:(

1 个答案:

答案 0 :(得分:1)

您可以使用跟踪工作表中每个更改的事件对象来跟踪上次修改过的'复制'它就像我在这个短视频中所做的那样固定在片材中。

my example sheet and data that is last modified

您必须将其粘贴到Tools -> Script Editor

function onEdit(e) {
  var s = SpreadsheetApp.getActiveSheet(); 
  var rng = e.range;
  var ix = rng.getRow();
  var X = s.getRange( ix, 1, 1, 3 );
  s.getRange( 3, 5, 1, 3 ).copyTo( s.getRange( 4, 5 ) ); // SECOND LAST TO BUTTOM
  s.getRange( 2, 5, 1, 3 ).copyTo( s.getRange( 3, 5 ) ); // SECOND LAST TO BUTTOM
  X.copyTo( s.getRange( 2, 5 ) ); // LAST ON TOP!  
}

..然后您可以通过REST提取数据,如:

获取https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/values/Sheet1!E2:G4

希望有所帮助:)