如何使用C#创建Google Sheet时指定文件夹存储位置?
如何指定Google Sheet的存储文件夹位置
你无法直接通过Sheets API的Spreadsheets.Create方法指定存储文件夹,需要结合Google Drive API来实现,以下是两种可行方案:
方案一:创建Sheet后移动到目标文件夹
先通过Sheets API创建Sheet,再用Drive API将其移动到指定文件夹:
- 确保你的项目已启用Drive API,并创建
DriveService实例(授权方式和SheetsService一致) - 获取创建好的Sheet的文件ID(即代码中的
SpreadsheetId) - 使用Drive API的
Files.Update方法修改文件的父文件夹
示例代码:
static void CreateSheetInFolder(string targetFolderId) { // 原创建Sheet的逻辑 string sheetName = "Test Create Sheet"; var NewSheet = new Google.Apis.Sheets.v4.Data.Spreadsheet(); NewSheet.Properties = new SpreadsheetProperties(); NewSheet.Properties.Title = sheetName; var newSheet = sheetsService.Spreadsheets.Create(NewSheet).Execute(); string spreadsheetFileId = newSheet.SpreadsheetId; // 调用Drive API移动到目标文件夹 var driveFile = new Google.Apis.Drive.v3.Data.File(); // 添加目标文件夹为父项,若需彻底移出根目录,可先获取原有父项再移除 driveFile.Parents = new List<string> { targetFolderId }; var updateRequest = driveService.Files.Update(driveFile, spreadsheetFileId); updateRequest.Fields = "parents"; updateRequest.Execute(); SpreadsheetId = spreadsheetFileId; Sheet = "Sheet1"; }
方案二:直接在目标文件夹创建Sheet(推荐)
无需先在根目录创建,直接通过Drive API在指定文件夹中生成Google Sheet文件,后续仍可使用Sheets API操作该表格:
示例代码:
static string CreateSheetDirectlyInFolder(string sheetName, string targetFolderId) { var newSheetFile = new Google.Apis.Drive.v3.Data.File() { Name = sheetName, // 指定文件类型为Google Sheet MimeType = "application/vnd.google-apps.spreadsheet", Parents = new List<string> { targetFolderId } }; var createRequest = driveService.Files.Create(newSheetFile); createRequest.Fields = "id"; var createdFile = createRequest.Execute(); // 返回Sheet的ID,供后续Sheets API调用使用 return createdFile.Id; }
注意事项
- 授权时需包含Drive API的相关权限(如
https://www.googleapis.com/auth/drive.file) - 需在Google Cloud Console中同时启用Drive API和Sheets API
内容的提问来源于stack exchange,提问作者warrenk
相关产品推荐
相关产品推荐

