/// <summary>
        /// 複製template建立新的Sheet
        /// </summary>
        public void CreateSheetFromTemplate(string newSheetName)
        {
            var copyRequestBody = new CopySheetToAnotherSpreadsheetRequest
            {
                DestinationSpreadsheetId = _googleSheetModel.SpreadSheetId
            };

            var copyRequest  = _sheetsService.Spreadsheets.Sheets.CopyTo(copyRequestBody, _googleSheetModel.SpreadSheetId, Convert.ToInt32(_googleSheetModel.TemplateSheetId));
            var copyResponse = copyRequest.Execute();
            var cloneSheetId = copyResponse.SheetId;

            var renameRequestBody = new BatchUpdateSpreadsheetRequest
            {
                Requests = new List <Request>
                {
                    new Request
                    {
                        UpdateSheetProperties = new UpdateSheetPropertiesRequest
                        {
                            Fields     = "title",
                            Properties = new SheetProperties
                            {
                                SheetId = cloneSheetId,
                                Title   = newSheetName
                            }
                        }
                    }
                }
            };

            var renameRequest = _sheetsService.Spreadsheets.BatchUpdate(renameRequestBody, _googleSheetModel.SpreadSheetId);

            renameRequest.Execute();
        }
示例#2
0
 //- Copy (Tab)
 public void CopyTabFrom(string sheet_url, int tab_id)
 {
     CopySheetToAnotherSpreadsheetRequest requestBody = new CopySheetToAnotherSpreadsheetRequest
     {
         DestinationSpreadsheetId = SheetUrl
     };
     var             request  = Service.Spreadsheets.Sheets.CopyTo(requestBody, sheet_url, tab_id);
     SheetProperties response = request.Execute();
 }
示例#3
0
        public void Backup <T>()
        {
            int sheetId = GetSheetIdByNameClass(typeof(T).Name);

            CopySheetToAnotherSpreadsheetRequest requestBody = new CopySheetToAnotherSpreadsheetRequest();

            requestBody.DestinationSpreadsheetId = SpreadsheetId;

            SpreadsheetsResource.SheetsResource.CopyToRequest request = Service.Spreadsheets.Sheets.CopyTo(requestBody, SpreadsheetId, sheetId);

            // To execute asynchronously in an async method, replace `request.Execute()` as shown:
            SheetProperties response = request.Execute();
            // Data.SheetProperties response = await request.ExecuteAsync();

            // TODO: Change code below to process the `response` object:
            var json = JsonConvert.SerializeObject(response);
        }
示例#4
0
        public static void ShablonDuplicater(int shID, string title)
        {
            CopySheetToAnotherSpreadsheetRequest requestBody = new CopySheetToAnotherSpreadsheetRequest
            {
                DestinationSpreadsheetId = SpreadsheetId
            };

            SpreadsheetsResource.SheetsResource.CopyToRequest request = service.Spreadsheets.Sheets.CopyTo(requestBody, SpreadsheetId, shID);
            SheetProperties response = request.Execute();

            BatchUpdateSpreadsheetRequest requestBodyBU = new BatchUpdateSpreadsheetRequest();
            IList <Request> LQReq = new List <Request>();

            LQReq.Add(google_requests.RenamerSh(response.SheetId, title));
            requestBodyBU.Requests = LQReq;
            BatchUpdateRequest BUrequest = service.Spreadsheets.BatchUpdate(requestBodyBU, SpreadsheetId);
            var resp2 = BUrequest.Execute();

            newSheetId = response.SheetId ?? 0;
        }
        public SheetProperties CopySheets(string ClientId, string ClientSecret, string destinationSpreadsheetId, string sourceSpreadsheetId, int sourceSheetId)
        {
            var sheetsService = GoogleAPI.GetSheetsService(ClientId, ClientSecret);

            CopySheetToAnotherSpreadsheetRequest requestBody = new CopySheetToAnotherSpreadsheetRequest();

            requestBody.DestinationSpreadsheetId = destinationSpreadsheetId;

            SpreadsheetsResource.SheetsResource.CopyToRequest request = sheetsService.Spreadsheets.Sheets.CopyTo(requestBody, sourceSpreadsheetId, sourceSheetId);

            // To execute asynchronously in an async method, replace `request.Execute()` as shown:
            SheetProperties response = request.Execute();

            // Data.SheetProperties response = await request.ExecuteAsync();

            // TODO: Change code below to process the `response` object:
            Console.WriteLine(JsonConvert.SerializeObject(response));

            return(response);
        }
示例#6
0
        public async Task <IActionResult> Index()
        {
            try
            {
                // Define request parameters.
                var accessTokenGoogle = await HttpContext.GetTokenAsync("Google", "access_token");

                var refreshToken = await HttpContext.GetTokenAsync("Google", "refresh_token");

                var accessToken = await HttpContext.GetTokenAsync("access_token");

                var user = await _userManager.GetUserAsync(User);

                string            externalAccessToken = null;
                ExternalLoginInfo info = await _signInManager.GetExternalLoginInfoAsync();

                if (User.Identity.IsAuthenticated)
                {
                    var userFromManager = await _userManager.GetUserAsync(User);

                    string authenticationMethod = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.AuthenticationMethod)?.Value;
                    if (authenticationMethod != null)
                    {
                        externalAccessToken = await _userManager.GetAuthenticationTokenAsync(userFromManager, authenticationMethod, "access_token");
                    }
                    else
                    {
                        externalAccessToken = await _userManager.GetAuthenticationTokenAsync(userFromManager, "Google", "access_token");
                    }
                }

                GoogleCredential googleCredential = GoogleCredential.FromAccessToken(externalAccessToken);

                // Create Google Sheets API service.
                var service = new SheetsService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = googleCredential,
                    ApplicationName       = "Gdevapps Portal"
                });

                // String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";//1IYcktfn-VBqzPDh_meN1TfpL5vCJmTx6YybrlPqhOQc
                //String range = "Class Data!A2:E";

                //String spreadsheetId = "1IYcktfn-VBqzPDh_meN1TfpL5vCJmTx6YybrlPqhOQc";//
                //String range = "GradeBook!A2:E";

                String spreadsheetId = "1JF459hxZuD_uKdBI7QXzfOhV8w8b_oaVpV3Ap6HYBC0";//
                String range         = "Data!A1:C16";
                //Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                ValueRange response = await service.Spreadsheets.Values.Get(spreadsheetId, range).ExecuteAsync();

                IList <IList <Object> > values = response.Values;
                for (var a = 0; a < values.Count; a++)
                {
                    for (var b = 0; b < values[a].Count; b++)
                    {
                        //var val = values[a][b].ToString();
                        //values[a][b] = string.IsNullOrEmpty(val) ? val : val.Replace("_1", "*");

                        var val = "=Column()+1";
                        values[a][b] = val;
                    }
                }

                var valueRange = new ValueRange()
                {
                    Range          = range,
                    MajorDimension = "ROWS",
                    Values         = values
                };

                var newSpreadSheet = await service.Spreadsheets.Create(new Spreadsheet()
                {
                    Properties = new SpreadsheetProperties()
                    {
                        Title = "Pash_test"
                    }
                }).ExecuteAsync();


                CopySheetToAnotherSpreadsheetRequest copyToRequest = new CopySheetToAnotherSpreadsheetRequest();
                copyToRequest.DestinationSpreadsheetId = newSpreadSheet.SpreadsheetId;
                var result = await service.Spreadsheets.Sheets.CopyTo(copyToRequest, spreadsheetId, 0).ExecuteAsync();

                DeleteSheetRequest deleteSheetRequest = new DeleteSheetRequest()
                {
                    SheetId = 0
                };

                BatchUpdateSpreadsheetRequest updateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest()
                {
                    Requests = new List <Request>
                    {
                        new Request()
                        {
                            DeleteSheet = deleteSheetRequest
                        }
                    },
                    ResponseIncludeGridData      = false,
                    IncludeSpreadsheetInResponse = false
                };


                await service.Spreadsheets.BatchUpdate(updateSpreadsheetRequest, newSpreadSheet.SpreadsheetId).ExecuteAsync();

                if (result != null)
                {
                    return(Ok(result));
                }

                //  var updateRequest = service.Spreadsheets.Values.Update(valueRange, spreadsheetId, range);
                //Formula
                //  updateRequest.ResponseValueRenderOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ResponseValueRenderOptionEnum.FORMULA;

                //  updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

                //service.Spreadsheets.Values.Update().

                //  await updateRequest.ExecuteAsync();

                if (values != null && values.Count > 0)
                {
                    return(Ok(values));
                }
                else
                {
                    return(BadRequest("No data found."));
                }
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                throw;
            }
        }
        /// Documentation https://developers.google.com/sheets/v4/reference/sheets/copyTo
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated Sheets service.</param>
        /// <param name="spreadsheetId">The ID of the spreadsheet containing the sheet to copy.</param>
        /// <param name="sheetId">The ID of the sheet to copy.</param>
        /// <param name="body">A valid Sheets v4 body.</param>
        /// <returns>SheetPropertiesResponse</returns>
        public static SheetProperties CopyTo(SheetsService service, string spreadsheetId, int sheetId, CopySheetToAnotherSpreadsheetRequest body)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }
                if (spreadsheetId == null)
                {
                    throw new ArgumentNullException(spreadsheetId);
                }

                // Make the request.
                return(service.Sheets.CopyTo(body, spreadsheetId, sheetId).Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request Sheets.CopyTo failed.", ex);
            }
        }