我无法在文档中找到有关如何仅从Google Sheets API获取更新的记录/行的信息。
有没有一种方法可以获取每条记录的最新修改时间戳?
可以解决此问题的任何指南或链接。
谢谢!
答案 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();
等等...