C# 在Google Sheets API中处理工作表更改
我正在尝试处理电子表格更改以更新数据的本地版本,但遇到了一些问题:C# 在Google Sheets API中处理工作表更改,c#,google-sheets,google-drive-api,google-sheets-api,C#,Google Sheets,Google Drive Api,Google Sheets Api,我正在尝试处理电子表格更改以更新数据的本地版本,但遇到了一些问题: Google Sheets API没有任何检查上次修改时间或文件版本的请求。(如果我弄错了,请纠正我) 谷歌需要一些时间来处理文件的更改和更新版本元数据 例如: 文件的版本为10 正在发送带有某些数据的BatchUpdateRequest 在上一个请求结束时,通过DriveAPI文件检查文件版本。使用字段“version”获取请求并获取旧版本10 如果等待大约15秒,此请求将返回正确的数据,但这不是一个解决方案,因为每个电子
- Google Sheets API没有任何检查上次修改时间或文件版本的请求。(如果我弄错了,请纠正我)
- 谷歌需要一些时间来处理文件的更改和更新版本元数据
var versions = Instance.GoogleSpreadsheetsVersions;
if (!versions.ContainsKey(newTable.SpreadsheetId)) {
var request = GoogleSpreadsheetsServiceDecorator.Instance.DriveService.Files.Get(newTable.SpreadsheetId);
request.Fields = "version";
var response = request.Execute();
versions.Add(newTable.SpreadsheetId, response.Version);
}
版本比较本身:
var newInfo = new Dictionary<string, long?>();
foreach (var info in GoogleSpreadsheetsVersions)
{
try
{
//Gets file version
var request = GoogleSpreadsheetsServiceDecorator.Instance.DriveService.Files.Get(info.Key);
request.Fields = "version";
var response = request.Execute();
// local version < actual google version
if (info.Value < response.Version)
{
// setting flag of reloading for each sheet from this file
foreach (var t in GoogleSpreadsheets.Where(sheet => sheet.SpreadsheetId == info.Key))
t.IsLoadRequestRequired = true;
}
//Refreshing local versions
newInfo.Add(info.Key, response.Version);
}
catch (Exception e) when (e.Message.Contains("File not found"))
{
newInfo.Add(info.Key, null);
}
}
GoogleSpreadsheetsVersions = newInfo;
var newInfo=newdictionary();
foreach(谷歌电子表格版本中的var信息)
{
尝试
{
//获取文件版本
var request=GoogleSpreadsheetsServiceDecorator.Instance.DriveService.Files.Get(info.Key);
request.Fields=“version”;
var response=request.Execute();
//本地版本<实际谷歌版本
如果(信息值<响应版本)
{
//为此文件中的每张图纸设置重新加载标志
foreach(GoogleSpreadsheets.Where中的var t(sheet=>sheet.SpreadsheetId==info.Key))
t、 IsLoadRequestRequired=true;
}
//刷新本地版本
newInfo.Add(info.Key,response.Version);
}
捕获(异常e)时(e.Message.Contains(“未找到文件”))
{
newInfo.Add(info.Key,空);
}
}
谷歌电子表格版本=newInfo;
附言:
- 谷歌指南中的版本字段描述: 文件的单调递增的版本号。这反映了对服务器上的文件所做的每一次更改,即使是用户看不到的更改
- 代码中的电子表格本地类表示Google中一张工作表的数据。所以,如果一个谷歌电子表格包含10张表格,那么它将是程序中的10张电子表格
- 可能会有帮助