öffentliche Google Spreadsheet-Daten mithilfe von Google Spreadsheet API Java-Bibliothek erhalten -was ichWie ohne Authentifizierung
Ich mag würde bekommen Daten aus Google-Tabelle mit Google Spreadsheet API Java-Bibliothek ohne Authentifizierung tun will. Die Google-Tabelle wird öffentlich veröffentlicht. Ich möchte die folgende Methode verwenden: com.google.gdata.data.spreadsheet.CustomElementCollection
-Ausgabe
CustomElementCollection Rückgabedaten mit Authentifizierung sammeln. Aber CustomElementCollection gibt null ohne Authentifizierung zurück.
Wie listEntry.getPlainTextContent() zeigt Daten, so denke ich, ich sollte in der Lage sein, die Daten in irgendeiner Weise zu bekommen.
-Quelle Code angebracht
Mit Authentifizierung: 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"));
}
}
}
Ohne Authentifizierung: 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"));
}
}
}
Google-Tabelle:
https://docs.google.com/spreadsheet/pub?key=0Ajawooo6A9OldHV0VHYzVVhTZlB6SHRjbGc5MG1CakE&output=html
-Ergebnis
ohne Authentifizierung
Gehalt = [Alter: 23] name = null Alter = null
mit Authentifizierung
Gehalt = [Alter: 23] name = Taro Alter = 23
Bitte lassen Sie mich wissen, die nützlichen Informationen, um das Problem zu vermeiden.
Vielen Dank für Ihre Zeit und Mühe! Ich werde es versuchen. – user2128521
Bitte werfen Sie einen Blick auf die Antwort von euclio. Es erklärt, warum die Codes in der Frage nicht funktionieren. – xhe8