0

Been following the guide on Googles website. Have my OAuth keys correctly setup but can't get this cell extraction code to work in Java.

Error message is:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from element type SpreadsheetEntry to CellEntry

at com.wow.trading.WOWTrading.MySpreadsheetIntegration.main(MySpreadsheetIntegration.java:51) 

Code is exactly as Google website and JARs are not missing.

package com.wow.trading.WOWTrading; import com.google.gdata.client.spreadsheet.*; import com.google.gdata.data.spreadsheet.*; import com.google.gdata.util.*; import java.io.IOException; import java.net.*; import java.util.*; public class MySpreadsheetIntegration { public static void main(String[] args) throws AuthenticationException, MalformedURLException, IOException, ServiceException { SpreadsheetService service = new SpreadsheetService("MySpreadsheetIntegration-v1"); // TODO: Authorize the service object for a specific user (see other sections) // Define the URL to request. This should never change. URL SPREADSHEET_FEED_URL = new URL( "https://spreadsheets.google.com/feeds/spreadsheets/private/full"); // Make a request to the API and get all spreadsheets. SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class); List<SpreadsheetEntry> spreadsheets = feed.getEntries(); if (spreadsheets.size() == 0) { // TODO: There were no spreadsheets, act accordingly. } // TODO: Choose a spreadsheet more intelligently based on your // app's needs. SpreadsheetEntry spreadsheet = spreadsheets.get(0); System.out.println(spreadsheet.getTitle().getPlainText()); // Get the first worksheet of the first spreadsheet. // TODO: Choose a worksheet more intelligently based on your // app's needs. WorksheetFeed worksheetFeed = service.getFeed( spreadsheet.getWorksheetFeedUrl(), WorksheetFeed.class); List<WorksheetEntry> worksheets = worksheetFeed.getEntries(); WorksheetEntry worksheet = worksheets.get(0); // Fetch the cell feed of the worksheet. URL cellFeedUrl = worksheet.getCellFeedUrl(); CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class); // Iterate through each cell, updating its value if necessary. // TODO: Update cell values more intelligently. **for (CellEntry cell : feed.getEntries()) {** if (cell.getTitle().getPlainText().equals("A1")) { cell.changeInputValueLocal("200"); cell.update(); } else if (cell.getTitle().getPlainText().equals("B1")) { cell.changeInputValueLocal("=SUM(A1, 200)"); cell.update(); } } } } 
1
  • What exactly is your question? Commented Jul 1, 2016 at 21:29

1 Answer 1

1

I've never used the Google Spreadsheets API, but the line you've highlighted has an error which is fairly clear to me.

Your variable feed is a SpreadsheetFeed. As you have a number of 'feed' objects, for spreadsheets, worksheets and cells, it would perhaps be an idea to rename feed to spreadsheetFeed, so it is clear which type of feed it is. You're already doing this with worksheets (worksheetFeed) and cells (cellFeed), so why not spreadsheets as well?

If you do that, the line of code you've highlighted above then becomes

for (CellEntry cell : spreadsheetFeed.getEntries()) { 

Hopefully by now the error is obvious. I'm guessing you wanted

for (CellEntry cell : cellFeed.getEntries()) { 

instead.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.