1

Я создаю листы с помощью google-листа api и хочу получить вложенную ссылку iframe для листа.Как установить «опубликовать в Интернете» в электронной таблице Google, используя API-интерфейс google .net?

ServiceAccountCredential credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(serviceAccountEmail) 
       { 
        Scopes = new[] { SheetsService.Scope.Spreadsheets,DriveService.Scope.DriveFile} 
       }.FromCertificate(certificate)); 
      BaseClientService.Initializer clientService = new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = ApplicationName, 
      }; 
      var service = new SheetsService(clientService); 
      var spareSheet = new Spreadsheet(); 
      spareSheet.Properties = new SpreadsheetProperties(); 
      spareSheet.Properties.Title = "TestSheet"; 

      spareSheet = service.Spreadsheets.Create(spareSheet).Execute(); 
+0

Ну, кажется, что вы не можете сделать это с [Sheets API] (https://developers.google.com/sheets/guides/concepts). И если вы проверите его документацию, здесь нет никаких опций или инструкций относительно этого «публикации в Интернете». Альтернативным способом, который я нашел, является использование [версии API для Drive API] (https://developers.google.com/drive/v3/reference/revisions). Вы можете проверить его здесь в этом вопросе [SO] (http://stackoverflow.com/questions/38533957/google-sheets-api-how-to-publish-to-web-for-embeddable-sheet). – KENdi

ответ

1
var driveService = new DriveService(clientService); 


      var fileMetadata = new Google.Apis.Drive.v3.Data.File(); 
      fileMetadata.Name = fileName; 
      fileMetadata.MimeType = "application/vnd.google-apps.spreadsheet"; 
      var fileRequest = driveService.Files.Create(fileMetadata); 
      fileRequest.Fields = "id"; 
      var file = fileRequest.Execute(); 
      Console.WriteLine("File ID: " + file.Id); 
      // Console.WriteLine("URL"+file.) 
      Permission userPermission = new Permission(); 
      userPermission.Type = "anyone"; 
      userPermission.Role = "writer"; 
      // userPermission.we 
      var revision = new Revision(); 
      revision.PublishAuto = true; 
      revision.Published = true; 
      revision.PublishedOutsideDomain = true; 
      driveService.Permissions.Create(userPermission, file.Id).Execute(); 
      var request = driveService.Revisions.Update(revision, file.Id, "head"); 
      request.Execute(); 
string iframeURl="<iframe src='https://docs.google.com/spreadsheets/d/"+file.Id+"/edit?rm=minimal#gid=1333667591' height='900' width='800'></iframe>";