Java到Google电子表格

Tim*_*Lai 7 java google-sheets google-spreadsheet-api

我正在尝试使用Java进行编程以连接到Google Spreadsheet以进行数据检索或修改单元格中的数据.

我的Google电子表格链接是https://docs.google.com/spreadsheets/d/1UXoGD2gowxZ2TY3gooI9y7rwWTPBOA0dnkeNYwUqQRA

我查看了Sheets API,它需要链接

https://spreadsheets.google.com/feeds/worksheets/key/private/full

我尝试过不同形式的链接,例如:

  1. https://spreadsheets.google.com/feeds/worksheets/1UXoGD2gowxZ2TY3gooI9y7rwWTPBOA0dnkeNYwUqQRA/private/full

  2. https://spreadsheets.google.com/feeds/worksheets/1UXoGD2gowxZ2TY3gooI9y7rwWTPBOA0dnkeNYwUqQRA/private/full

他们分别给了我不同的错误:

  1. com.google.gdata.util.ParseException: Unrecognized content type:application/binary
  2. com.google.gdata.util.RedirectRequiredException: Moved Temporarily

我不知道如何使用Java连接到Googl Spreadsheet.如果您有这方面的经验,请帮助我.

import com.google.gdata.client.authn.oauth.*;
import com.google.gdata.client.spreadsheet.*;
import com.google.gdata.data.*;
import com.google.gdata.data.batch.*;
import com.google.gdata.data.spreadsheet.*;
import com.google.gdata.util.*;
import org.testng.annotations.Test;

import java.io.IOException;
import java.net.*;
import java.util.*;

public class TestGoogleSheetsAPI {

    @Test
    public void testConnectToSpreadSheet() throws ServiceException, IOException {
        SpreadsheetService service = new SpreadsheetService("google-spreadsheet");

        URL SPREADSHEET_FEED_URL = new URL("https://spreadsheets.google.com/feeds/worksheets/1UXoGD2gowxZ2TY3gooI9y7rwWTPBOA0dnkeNYwUqQRA/public/full");
        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.
        }

        SpreadsheetEntry spreadsheet = spreadsheets.get(0);
        System.out.println(spreadsheet.getTitle().getPlainText());
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有使用,service.setUserCredentials("xxx@gmail", "password")因为我会有另一个错误,这是com.google.gdata.util.AuthenticationException: Error authenticating (check service name)

Ale*_*x R 0

您从该 URL 获得的提要是 a WorksheetFeed,而不是SpreadsheetFeed。尝试这个:

    SpreadsheetService service = new SpreadsheetService("google-spreadsheet");

    FeedURLFactory urlFactory = FeedURLFactory.getDefault();
    WorksheetFeed worksheetFeed = service.getFeed(urlFactory.getWorksheetFeedUrl("1V4jT4vSqmY4YNY1VJhariLRLbxfFWf5z8bSTpDcSBPE", "public", "full"), WorksheetFeed.class);
    List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
    WorksheetEntry worksheet = worksheets.get(0);
    System.out.println(worksheet.getTitle().getPlainText());
Run Code Online (Sandbox Code Playgroud)