【发布时间】:2021-08-22 18:14:54
【问题描述】:
Google SpreadSheet API (v4) 的全新功能。我正在使用 .Net (5.0) 创建一个新的电子表格,我认为它会保存在我的 Google 云端硬盘/帐户中。
从我能找到的示例/文档中拼凑出以下内容,但我不明白电子表格的保存(存储)位置 - 因为我无法在我的帐户中找到它。
下面是我正在使用的代码——执行时没有错误并返回电子表格 ID 和 URL——但在我的 Google 帐户中找不到电子表格!!
String sheet_name;
Google.Apis.Sheets.v4.SpreadsheetsResource.CreateRequest create_request;
Google.Apis.Sheets.v4.Data.Spreadsheet spreadsheet_body;
Google.Apis.Sheets.v4.Data.Spreadsheet spreadsheet;
Google.Apis.Sheets.v4.Data.Sheet sheet;
// Create spreadsheet object and set properties ...
spreadsheet_body = new Google.Apis.Sheets.v4.Data.Spreadsheet();
spreadsheet_body.Properties = new Google.Apis.Sheets.v4.Data.SpreadsheetProperties();
spreadsheet_body.Properties.Title = "TEST1";
// Create list of sheets to include in this spreadsheet ...
spreadsheet_body.Sheets = new List<Google.Apis.Sheets.v4.Data.Sheet>();
// Create a sheet object and set properties ...
sheet_name = "Sheet 1";
sheet = new Google.Apis.Sheets.v4.Data.Sheet();
sheet.Properties = new Google.Apis.Sheets.v4.Data.SheetProperties();
sheet.Properties.Title = sheet_name;
sheet.Properties.SheetId = 1;
sheet.Properties.SheetType = "GRID";
// Add sheet to this spreadsheet ...
spreadsheet_body.Sheets.Add( sheet );
// Try to create the spreadsheet ...
try
{
create_request = sheet_service.Spreadsheets.Create( spreadsheet_body );
spreadsheet = create_request.Execute();
// Spreadsheet ID returned -- but where is the spreadsheet saved??? ...
Console.WriteLine( $"spreadsheet.SpreadsheetId: {spreadsheet.SpreadsheetId}" );
Console.WriteLine( $"spreadsheet.SpreadsheetUrl: {spreadsheet.SpreadsheetUrl}" );
}
catch ( Exception ex )
{
Console.WriteLine( ex.ToString() );
}
}
当我将返回的 URL 剪切并粘贴到浏览器中时,Google 会显示以下内容:
You need access Ask for access, or switch to an account with access.
...带有一个名为“请求访问”的按钮——点击时,系统显示:
Request sent You'll get an email letting you know if the file is shared with you
...但我从未收到任何电子邮件
我在向 API 发出请求时使用了服务帐户/凭据,这可能是问题所在吗?
如果有人有通过 API 在自己的 Google 帐户中创建 Google 电子表格的工作示例,请分享。
非常感谢任何帮助/见解。
【问题讨论】:
-
虽然我不确定我是否能正确理解你的情况,但我提出了4个方向来实现你的目标。你能确认一下吗?如果这些对您的情况没有用,我深表歉意。
-
是的 - 我相信你是对的 - 那就是“电子表格是在服务帐户的谷歌驱动器的根文件夹中创建的。”。甚至可以登录服务帐户吗?我相信模式 3 可能是答案 - 但我还没有找到创建快速入门示例中所需的“credentials.json”文件的分步说明。这很痛苦。
-
感谢您的回复。关于您
Is it even possible to log in to a service account?的附加问题,如果您想使用浏览器登录服务帐号的Google Drive,很遗憾,目前阶段无法实现。我为此道歉。至此,我提出了模式1和2。关于I have yet to find step-by-step instructions for creating the "credentials.json" file,如果“.NET quickstart”的this section没有用,再次道歉。 -
@Tanaike - 无需道歉 - 你是最有帮助的。由于我对凭据缺乏了解,我现在看到,在使用服务帐户时,必须授予对电子表格的访问权限,服务帐户才能访问/修改电子表格。为了创建电子表格(在不同的 Google 帐户/驱动器中),必须使用 OAuth(用户)凭据。对于我的特定用例,暂时授予对服务帐户的访问权限。再次感谢您的建议和时间。
-
感谢您的回复。我不得不为我糟糕的英语水平道歉。很遗憾,从您的回复中,我无法了解您目前的情况。当我的建议对您的情况没有用时,我必须道歉。可以问一下您目前的情况吗?
标签: .net google-sheets-api c#-5.0