Example #1
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;
        }
Example #2
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);
        }