【问题标题】:Create Google Spreadsheet with latest API (v4) in .NET C# in another one's account在另一个人的帐户中使用 .NET C# 中的最新 API (v4) 创建 Google 电子表格
【发布时间】:2017-01-06 07:50:01
【问题描述】:

我无法使用新的 SpreadSheet API 在 GoogleDocs 中创建电子表格,因为现在支持它而不是使用 Google Drive API。

我发现的所有示例都用于创建和修改表格,而不是主电子表格。

static string[] Scopes = { SheetsService.Scope.Spreadsheets };

var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets {
    ClientId = clientId, // FROM JSON
    ClientSecret = clientSecret // FROM JSON
},
 Scopes, Environment.UserName, CancellationToken.None,
 new FileDataStore("xxIDxx.GoogleDrive.Auth.Store")).Result;

var service = new SheetsService(new BaseClientService.Initializer() {
    HttpClientInitializer = credential,
    ApplicationName = "Google Sheets API Project",
});

string SpreadSheetID = "AVeryLongAndRandomStringID";
Spreadsheet SpSheet = new Spreadsheet();
SpSheet.Properties = new SpreadsheetProperties();
SpSheet.SpreadsheetId = SpreadSheetID;
SpSheet.Properties.Title = "I HATE THIS SPREADSHEET";

Sheet MySheet = new Sheet();
MySheet.Properties = new SheetProperties();
MySheet.Properties.Title = "MySheet";
MySheet.Properties.SheetId = 34213312;
MySheet.Properties.SheetType = "GRID";

var SheetSet = new List<Sheet>();
SheetSet.Add(MySheet);

SpSheet.Sheets = SheetSet;

var MyNewSpreadSheet = service.Spreadsheets.Create(SpSheet).Execute();

谢谢!

更新:

小版本“var MyNewSpreadSheet”确实有效(我的最后一次尝试也有效)但是...我没有意识到它将文档保存在 MY googleDrive 中,而不是我客户的帐户中。 p>

我试图完成的是创建一个应用程序,任何拥有谷歌帐户的人都可以在“存储库”帐户中创建或更改电子表格文档。

文件“client_secret.json”是从我客户的帐户生成的,我不知道为什么代码会在登录的 gmail 帐户上创建电子表格。

有什么想法吗? 谢谢!

【问题讨论】:

    标签: c# .net google-sheets google-docs-api


    【解决方案1】:

    您可能想尝试使用这种格式发送 HTTP 请求:

    POST https://sheets.googleapis.com/v4/spreadsheets
    

    Method: spreadsheets.create 中所述,如果请求成功,则响应正文包含一个新创建的电子表格实例。 另外,请注意,使用此方法需要以下 OAuth 范围:

    • https://www.googleapis.com/auth/drive
    • https://www.googleapis.com/auth/spreadsheets

    此外,如果有帮助,请尝试检查此documentation。这是关于使用 C# 的 Sheets API。

    【讨论】:

    • 示例代码中提到了一个需要删除的令牌文件,该文件不存在,必须进行“清理”,然后将static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };这一行更改为SpreadsheetsReadOnly,并将SpreadsheetsReadOnly替换为Drive跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多