Google Sheet API-如何仅获取更新的行

时间:2019-11-11 09:21:59

标签: google-sheets-api google-api-nodejs-client

我无法在文档中找到有关如何仅从Google Sheets API获取更新的记录/行的信息。

有没有一种方法可以获取每条记录的最新修改时间戳?

可以解决此问题的任何指南或链接。

谢谢!

2 个答案:

答案 0 :(得分:1)

您不能直接通过Sheets API执行此操作。不过,您可以跟踪文件using Drive API中的更改,但是我认为这不是您想要执行的操作。

我建议通过Apps脚本使用onEdit trigger。每次修改电子表格时,您都可以检索the data of the edited range并将其存储在某个位置以及当前日期。

可能在以下几行中出现:

function onEdit(e) {
  var timestamp = new Date();
  var range = e.range;
  var editedRow = range.getRow();
  // Store timestamp and editedRow index somewhere you can retrieve it later (it could be in the spreadsheet itself)
}

更新:

您可以使用Apps Script API远程创建触发器。首先,您应该创建一个项目bound to your spreadsheet,然后通过调用projects.updateContent添加相应的代码(您应该添加两个文件,即脚本本身(包含onEdit触发器)和清单文件)。请注意,您只能通过此API使用简单的触发器,而不能使用可安装的触发器。但是根据您的情况,这已经足够了。

我希望这会有所帮助。

答案 1 :(得分:1)

写操作:

对于 $response = $service->spreadsheets_values->update() 过程(创建后写入文件),响应如下:

Google_Service_Sheets_UpdateValuesResponse Object
(
    [spreadsheetId] => XXX
    [updatedCells] => 7
    [updatedColumns] => 7
    [updatedDataType:protected] => Google_Service_Sheets_ValueRange
    [updatedDataDataType:protected] => 
    [updatedRange] => Sheet1!A1:G1
    [updatedRows] => 1
    [internal_gapi_mappings:protected] => Array
        (
        )

    [modelData:protected] => Array
        (
        )

    [processed:protected] => Array
        (
        )

)

获取行 = $response->getUpdatedRows();

获取单元格 = $response->getUpdatedCells();

获取列= $response->getUpdatedColumns();

等等...

追加操作:

对于 $response = $service->spreadsheets_values->append() 过程,响应如下:

Google_Service_Sheets_AppendValuesResponse Object
(
    [spreadsheetId] => XXXX
    [tableRange] => Sheet1!A1:G1
    [updatesType:protected] => Google_Service_Sheets_UpdateValuesResponse
    [updatesDataType:protected] => 
    [internal_gapi_mappings:protected] => Array
        (
        )

    [modelData:protected] => Array
        (
            [updates] => Array
                (
                    [spreadsheetId] => XXXX
                    [updatedRange] => Sheet1!A2:G7
                    [updatedRows] => 6
                    [updatedColumns] => 7
                    [updatedCells] => 42
                )

        )

    [processed:protected] => Array
        (
        )

)

获取行 = $response->getUpdates()->getUpdatedRows();

获取单元格 = $response->getUpdates()->getUpdatedCells();

获取列= $response->getUpdates()->getUpdatedColumns();

等等...