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 static async System.Threading.Tasks.Task ReadEntriesAsync(Dictionary <string, object> dic) { int year = ((DateTime)dic["date"]).Year; int month = ((DateTime)dic["date"]).Month; dic["date"] = ((DateTime)dic["date"]).ToString("dd/MM/yyyy"); //string mont_nm = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(((DateTime)dic["date"]).Month); //string mont_nm = ((DateTime)dic["date"]).Month.ToString("MMMM", new CultureInfo("ru-RU")); string[] months = { "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" }; string mont_nm = months[month - 1].ToLower(); int sh_ID = 0; SheetExist(year); sh_ID = Googles.sheet_id; sheet = SheetName; var range = $"{sheet}!A:K"; //находить пустые строки при месяце //range A:A //IF row[0] == mont_nm то вставить строчку выше(если строчка выше пустая if предыдущий row[1] <> "", то получить ее номер, если нет новую) //заность данные туда. Получить координаты этой строчки (A + row.number, K + row.number) //ну и собстно поехали int inp_row = 0; int inp_row_mount = 0; SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(SpreadsheetId, range); var lol = service.Spreadsheets.Get(SpreadsheetId).Execute(); var response = request.Execute(); IList <IList <object> > values = response.Values; if (values != null && values.Count > 0) { foreach (var row in values) { if (row[0].ToString() == mont_nm.ToLower()) { inp_row = inp_row_mount = values.IndexOf(row) + 1; //Получаем индекс предыдущей строки (или нужен настоящей?) //проверка на пустую строку должна быть, если строка не пустая вставить строку а не апдейтить //тобишь если строка row.count > 1 break; } } //нашли строку, смотрим пустая она //если да пишем в нее IList <Request> LQReq = new List <Request>(); if (values[inp_row - 1].Count > 1) { if (values[inp_row][0].ToString().Length > 1) //если в следующей строке в месяце что-то написано { await InsertRowAsync(dic, inp_row + 1); Debug.WriteLine("RETURN HOME"); RB.fst_clm = 0; RB.sec_clm = 1; RB.fst_rw = inp_row - 1; RB.sec_rw = inp_row + 1; LQReq.Add(Merger(sh_ID)); Debug.WriteLine("MERGER"); } else { while (values[inp_row][0].ToString().Length == 0) { inp_row++; } await InsertRowAsync(dic, inp_row + 1); Debug.WriteLine("RETURN HOME"); RB.fst_clm = 0; RB.sec_clm = 1; RB.fst_rw = inp_row_mount - 1; RB.sec_rw = inp_row + 1; LQReq.Add(Merger(sh_ID)); Debug.WriteLine("MERGER"); } //foreach (Request item in google_requests.FormateRq(sh_ID, inp_row)) // { //LQReq.Add(item); //} BatchUpdateSpreadsheetRequest requestBody = new BatchUpdateSpreadsheetRequest(); requestBody.Requests = LQReq; BatchUpdateRequest BUrequest = service.Spreadsheets.BatchUpdate(requestBody, SpreadsheetId); BUrequest.Execute(); } else { //пустая, использовать существующий номер UpdateEntry(inp_row, dic); } } else { Debug.WriteLine("No data found."); } //sheetInfo = service.Spreadsheets.Get(SpreadsheetId).Execute(); sheetInfo = Googles.service.Spreadsheets.Get(Googles.SpreadsheetId).Execute(); Toast.MakeText(Android.App.Application.Context, "Запись прошла успешна", ToastLength.Long).Show(); }
// STATUS [ August 3, 2019 ] : this works // BatchUpdateValuesResponse // * "The response when updating a range of values in a spreadsheet" // * Type is Google.Apis.Sheets.v4.Data.BatchUpdateValuesResponse // * To do this async --> Data.BatchUpdateValuesResponse response = await request.ExecuteAsync(); // * See: https://bit.ly/2ZG0VJq private static BatchUpdateValuesResponse CreateBatchUpdateValuesResponse(BatchUpdateRequest request) { BatchUpdateValuesResponse response = request.Execute(); return(response); }