我想用Google.Apis.Sheets.v4从C#下载谷歌电子表格的所有可用工作表;我写了以下代码,我从谷歌开发人员网页上获得,但在这里它只能通过其id连接特定的工作表:
UserCredential凭证;
using (var stream =
new FileStream(@"credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
String spreadsheetId = "1rpmT0S1Naic8wG8xok2cjNJBIgKa8t24C80muc8YVNE";// "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
String range = "Class Data!A1:B4";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(spreadsheetId, range);有没有办法下载所有表格的名称和它的电子表格id,这样我的程序就可以通过id逐个连接每个表格并更新数据?提前感谢
发布于 2019-01-22 18:30:15
我认为这取决于您到底想要做什么,因为您的问题不清楚,我怀疑是由于您对API及其功能的误解。
因此,例如,如果您要下载用户有权访问的所有google工作表的列表,您可以使用Google drive api file.list方法。然后,您可以下载文件本身到您的硬盘驱动器。或者,您可以使用Google sheets api来查看文件本身的大小。
var request = service.Files.List();
request.Q = "mimeType = 'application/vnd.google-apps.spreadsheet'"
var result = request.Execute();Google drive api上的说明
您需要记住的是Google drive api是一个文件存储api。可以把它想象成windows PC上的文件资源管理器。它包含有关用户有权访问的文件的所有信息。google sheets api只能访问pplication/vnd.google-apps.spreadsheet类型的文件中的数据
获取类型为sheet的文件列表
var driveService = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive Oauth2 Authentication Sample"
});
var request = driveService.Files.List();
request.Q = "mimeType = 'application/vnd.google-apps.spreadsheet'"
var result = request.Execute();
var fileId = result.FirstOrDefault().Id
var fileId = result.FirstOrDefault().Name作用域
请记住,要访问用户的数据,您必须拥有用户访问该数据的权限,才能正常工作,您必须请求访问其驱动器数据的权限。以下其中一个作用域应该可以工作。
列出所有文件教程
本教程还可以帮助您使用List All files。您只需添加q参数,以便仅列出特定元数据类型的文件。
发布于 2019-01-23 06:38:20
您可以使用@DaImTo提供的代码来获取驱动器上所有必要的电子表格ID。
然后,您可以使用spreadsheets.get方法来获取特定电子表格上的所有信息,包括工作表名称和ids https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get
然后,您可以使用spreadsheets.values资源中的各种方法来获取/更新/批量更新工作表中的值。https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values提示:在values.get中只将表名作为range参数的值,将返回包含所有表值的范围,这非常方便。
https://stackoverflow.com/questions/54306098
复制相似问题