Как создать проверку диапазона списка с помощью Android Google Spreadsheet API

Я создаю приложение для Android, которое создает новую электронную таблицу на Google Диске и вставляет внутрь некоторые данные. В настоящее время я могу вставлять бесплатный текст и формулы, но мне нужно добавить некоторые конкретные проверки и, в частности, раскрывающийся список с предопределенными значениями.

Ожидаемый результат должен быть примерно таким: Dropdown Image

Я использую этот код:

SpreadsheetFeed feed = spreadsheetService.getFeed(
                FeedURLFactory.getDefault()
                        .getSpreadsheetsFeedUrl(),
                SpreadsheetFeed.class); 
        // Creating the list of spreasheets in GDrive
        List<com.google.gdata.data.spreadsheet.SpreadsheetEntry> spreadsheets = feed.getEntries();

            // parsing trough the feed entries
        for (int i = 0; i < spreadsheets.size(); i++) {
            com.google.gdata.data.spreadsheet.SpreadsheetEntry e = (com.google.gdata.data.spreadsheet.SpreadsheetEntry) spreadsheets.get(i);
            // IF WE LOCATE THE FILE BASED ON THE FILENAME
            if( e.getTitle().getPlainText().equals(Constants.FILE_PREFIX + mFileName)) {

                Log.d(TAG, "ENTRY: " + e.getTitle().getPlainText());

                URL worksheetFeedUrl = e.getWorksheetFeedUrl();

                Log.d(TAG, "worksheetFeedUrl: " + worksheetFeedUrl);

                // The first time this feed is used to create the new worksheet
                WorksheetFeed worksheetFeed = spreadsheetService.getFeed (worksheetFeedUrl, WorksheetFeed.class);

                Log.d(TAG, "worksheetFeed OK !");

                // Create the second worksheet 
                WorksheetEntry newWorksheet = new WorksheetEntry(15, 5);
                newWorksheet.setTitle(new PlainTextConstruct("Sheet2"));
                worksheetFeed.insert(newWorksheet);

                // The second time this feed is used to get the worksheets
                worksheetFeed = spreadsheetService.getFeed (worksheetFeedUrl, WorksheetFeed.class);

                // Get the first worksheet and insert the titles
                List <WorksheetEntry> worksheetEntrys = worksheetFeed.getEntries ();
                WorksheetEntry sheet1 = worksheetEntrys.get(0);
                WorksheetEntry sheet2 = worksheetEntrys.get(1);

                URL sheet1CellFeedUrl = sheet1.getCellFeedUrl ();
                CellFeed sheet1CellFeed = spreadsheetService.getFeed (sheet1CellFeedUrl, CellFeed.class);

                sheet1CellFeed.insert (new CellEntry (1, 1, getResources().getString(R.string.cell_title_name)));
                sheet1CellFeed.insert (new CellEntry (1, 2, getResources().getString(R.string.cell_title_description)));
                sheet1CellFeed.insert (new CellEntry (3, 2, getResources().getString(R.string.some_string)));                   
                sheet1CellFeed.insert (new CellEntry (13, 2, "=COUNTIF(Sheet1!F2:F,B3)"));
                sheet1CellFeed.insert (new CellEntry (14, 2, "=B9 - TODAY()"));

                break;
           }
       }

Мне нужен способ вставить этот список диапазонов критериев из API программно, а не из пользовательского интерфейса.

Спасибо.


person kirilv    schedule 05.12.2014    source источник
comment
Не могли бы вы переформатировать код? Кажется, что for и if не закрыты.   -  person A.L    schedule 05.12.2014
comment
Я ищу код для создания электронной таблицы из приложения для Android. Можете ли вы поделиться своим кодом для создания электронной таблицы.   -  person Rakki s    schedule 05.02.2015


Ответы (2)


requireValueInList (значения, showDropdown)

Вы можете сделать это с помощью скрипта Google Apps, вы можете вызвать скрипт Google Apps с сервера, но это невозможно сделать с помощью (gdata) электронной таблицы-api.

Из документов requireValueInList

 // Set the data validation for cell A1 to require "Yes" or "No", with no dropdown menu.
 var cell = SpreadsheetApp.getActive().getRange('A1');
 var rule = SpreadsheetApp.newDataValidation().requireValueInList(['Yes', 'No'], false).build();
 cell.setDataValidation(rule);
person eddyparkinson    schedule 07.12.2014
comment
Большое спасибо! Я вообще не знал о существовании Google Apps Script. Вы сэкономили мне много времени. Я обязательно попробую со скриптом Google Apps. Мне просто не нравится, как беспорядочно все сделал Google, смешав API... - person kirilv; 08.12.2014
comment
Скрипт приложений Google — это JavaScript, поэтому синтаксис и встроенные функции — это JavaScript. - person eddyparkinson; 08.12.2014
comment
В настоящее время я обычно использую ethercalc, он с открытым исходным кодом и может делать многое из того, что могут делать листы Google. ethercalc.org — есть формулы для выпадающих списков и подсказок. - person eddyparkinson; 06.10.2016

Apps Script в первую очередь предназначен для автоматизации рабочих процессов поверх Google Apps. И нет простого способа, как связать его с клиентами, но есть способ. Зависит от ваших требований и от того, кто будет использовать приложение.

Меня больше интересует интеграция Android с таблицами Google. Я ожидал, что Drive API сможет обрабатывать создание и изменение таблиц Google. Но кажется, что Google Spreadsheets API — единственный выход.

person jogo    schedule 08.12.2014
comment
Он действительно может создавать и изменять электронные таблицы, но с серьезными ограничениями. Например, вы не можете установить цвета фона, стили шрифтов, проверку списка и т.д. - person kirilv; 08.12.2014