【问题标题】:How to create a list range validation using the Android Google Spreadsheet API如何使用 Android Google 电子表格 API 创建列表范围验证
【发布时间】:2014-12-05 12:38:42
【问题描述】:

我正在创建一个 android 应用程序,该应用程序在 Google Drive 中创建一个新的电子表格并在其中插入一些数据。目前我可以插入免费的文本和公式,但我需要添加一些特定的验证,特别是带有预定义值的下拉列表。

预期的结果应该是这样的:

我正在使用此代码:

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 插入此条件范围列表​​,而不是从 UI。

谢谢。

【问题讨论】:

  • 您能重新格式化您的代码吗? forif 好像没有关闭。
  • 我正在寻找从 android 应用程序创建电子表格的代码,你能分享你的代码来创建电子表格吗?

标签: java android google-sheets google-spreadsheet-api google-drive-api


【解决方案1】:

requireValueInList(values, 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);

【讨论】:

  • 非常感谢!我根本不知道 Google Apps Script 的存在。你为我节省了很多时间。我一定会尝试使用 Google Apps 脚本。我只是不喜欢 Google 做的所有事情都乱七八糟,把 API 混在一起......
  • Google Apps 脚本是 JavaScript,所以语法和内置函数都是 JavaScript。
  • 这些天我倾向于使用 ethercalc,它是开源的,可以做很多 google sheet 可以做的事情。 ethercalc.org - 有下拉列表和建议框的公式。
【解决方案2】:

Apps 脚本主要设计用于在 Google Apps 之上实现工作流自动化。没有简单的方法如何将它与客户连接,但有一种方法。取决于您的要求以及谁将使用该应用程序。

我对 Android 与 Google 电子表格的集成更感兴趣。我期待 Drive API 可以处理 Google 电子表格的创建和修改。但 Google 电子表格 API 似乎是唯一的出路。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
相关资源
最近更新 更多