-Co chcę zrobićJak zdobyć publiczne dane z arkusza kalkulacyjnego Google za pomocą Google biblioteki API Java bez uwierzytelniania
chciałbym uzyskać dane z arkusza kalkulacyjnego Google z wykorzystaniem arkusza kalkulacyjnego Google API biblioteki Java bez uwierzytelniania. Arkusz kalkulacyjny Google jest publikowany publicznie. ja posługiwać się w następujący sposób: com.google.gdata.data.spreadsheet.CustomElementCollection
-Issue
CustomElementCollection powrotu zbierać dane z uwierzytelniania. Ale funkcja CustomElementCollection zwraca wartość null bez uwierzytelnienia.
Ponieważ listEntry.getPlainTextContent() pokazuje dane, więc myślę, że powinienem być w stanie uzyskać dane w dowolny sposób.
kod -source dołączony
Z uwierzytelniania: Auth.java
import java.net.URL;
import java.util.List;
import com.google.gdata.client.spreadsheet.ListQuery;
import com.google.gdata.client.spreadsheet.SpreadsheetService;
import com.google.gdata.data.spreadsheet.CustomElementCollection;
import com.google.gdata.data.spreadsheet.ListEntry;
import com.google.gdata.data.spreadsheet.ListFeed;
import com.google.gdata.data.spreadsheet.SpreadsheetEntry;
import com.google.gdata.data.spreadsheet.WorksheetEntry;
public class Auth {
public static void main(String[] args) throws Exception{
String applicationName = "AppName";
String user = args[0];
String pass = args[1];
String key = args[2];
String query = args[3];
SpreadsheetService service = new SpreadsheetService(applicationName);
service.setUserCredentials(user, pass); //set client auth
URL entryUrl = new URL("http://spreadsheets.google.com/feeds/spreadsheets/" + key);
SpreadsheetEntry spreadsheetEntry = service.getEntry(entryUrl, SpreadsheetEntry.class);
WorksheetEntry worksheetEntry = spreadsheetEntry.getDefaultWorksheet();
ListQuery listQuery = new ListQuery(worksheetEntry.getListFeedUrl());
listQuery.setSpreadsheetQuery(query);
ListFeed listFeed = service.query(listQuery, ListFeed.class);
List<ListEntry> list = listFeed.getEntries();
for(ListEntry listEntry : list)
{
System.out.println("content=[" + listEntry.getPlainTextContent() + "]");
CustomElementCollection elements = listEntry.getCustomElements();
System.out.println(
" name=" + elements.getValue("name") +
" age=" + elements.getValue("age"));
}
}
}
bez uwierzytelniania: NoAuth.java
import java.net.URL;
import java.util.List;
import com.google.gdata.client.spreadsheet.FeedURLFactory;
import com.google.gdata.client.spreadsheet.ListQuery;
import com.google.gdata.client.spreadsheet.SpreadsheetService;
import com.google.gdata.data.spreadsheet.CustomElementCollection;
import com.google.gdata.data.spreadsheet.ListEntry;
import com.google.gdata.data.spreadsheet.ListFeed;
import com.google.gdata.data.spreadsheet.WorksheetEntry;
import com.google.gdata.data.spreadsheet.WorksheetFeed;
public class NoAuth {
public static void main(String[] args) throws Exception{
String applicationName = "AppName";
String key = args[0];
String query = args[1];
SpreadsheetService service = new SpreadsheetService(applicationName);
URL url = FeedURLFactory.getDefault().getWorksheetFeedUrl(key, "public", "basic");
WorksheetFeed feed = service.getFeed(url, WorksheetFeed.class);
List<WorksheetEntry> worksheetList = feed.getEntries();
WorksheetEntry worksheetEntry = worksheetList.get(0);
ListQuery listQuery = new ListQuery(worksheetEntry.getListFeedUrl());
listQuery.setSpreadsheetQuery(query);
ListFeed listFeed = service.query(listQuery, ListFeed.class);
List<ListEntry> list = listFeed.getEntries();
for(ListEntry listEntry : list)
{
System.out.println("content=[" + listEntry.getPlainTextContent() + "]");
CustomElementCollection elements = listEntry.getCustomElements();
System.out.println(
" name=" + elements.getValue("name") +
" age=" + elements.getValue("age"));
}
}
}
kalkulacyjny Google:
https://docs.google.com/spreadsheet/pub?key=0Ajawooo6A9OldHV0VHYzVVhTZlB6SHRjbGc5MG1CakE&output=html
-Result
bez uwierzytelnienia
= zawartość [wiek: 23] nazwa = NULL wiek = NULL
z uwierzytelniania
= zawartość [wiek: 23] nazwa = taro wiek = 23
Proszę dać mi znać przydatne informacje, aby uniknąć problemu.
Dziękuję za poświęcony czas i wysiłek! Spróbuję. – user2128521
Proszę spojrzeć na odpowiedź euclio. Wyjaśnia, dlaczego kody w pytaniu nie działają. – xhe8