Я думаю, это то, что вы просите.(https://developers.google.com/sheets/api/quickstart/java, https://www.youtube.com/watch?v=zDxTSUWaZs4) Я использую этот код для доступа к листу Google с помощью идентификатора
public class ConnectToDatabase extends AsyncTask<Object, Integer, Long> {
private static final String APPLICATION_NAME = "Google Sheets API Java Quickstart";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static String SPREADSHEET_ID = INSERTYOURIDHERE;
private static MainActivity main_Activity = null;
/**
* Global instance of the scopes required by this quickstart.
* If modifying these scopes, delete your previously saved tokens/ folder.
*/
private static final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS_READONLY);
private static final String CREDENTIALS_FILE_PATH = "credentials.json";
public ConnectToDatabase(MainActivity mainActivity) {
this.main_Activity = mainActivity;
}
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
// Load client secrets.
InputStream in =
main_Activity.getAssets().open("credentials.json");
//new FileInputStream(CREDENTIALS_FILE_PATH);
ConnectToDatabase.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(main_Activity.getDir(TOKENS_DIRECTORY_PATH, Context.MODE_APPEND)))
.setAccessType("offline")
.build();
AuthorizationCodeInstalledApp ab = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()){
protected void onAuthorization(AuthorizationCodeRequestUrl authorizationUrl) throws IOException {
String url = (authorizationUrl.build());
/*flow.newAuthorizationUrl()
.setScopes(flow.getScopes())
.setAccessType("offline")
.setClientId(clientSecrets.getDetails().getClientId())
.setRedirectUri("/oauth2-callback")
.toString();
*/
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
main_Activity.startActivity(browserIntent);
}
};
Credential a = ab.authorize("user");
return a;
}
/**
* Prints the names and majors of students in a sample spreadsheet:
* https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
*/
public static void main(String[] args) throws IOException, GeneralSecurityException {
// Build a new authorized API client service.
final NetHttpTransport HTTP_TRANSPORT = new com.google.api.client.http.javanet.NetHttpTransport();
final String range = "A1:H";
Sheets service = null;
try {
service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
} catch (IOException e) {
e.printStackTrace();
}
ValueRange response = null;
try {
response = service.spreadsheets().values()
.get(SPREADSHEET_ID, range)
.execute();
} catch (IOException e) {
e.printStackTrace();
}
List<List<Object>> values = response.getValues();
[...]
}
}
Возможно, вам потребуется немного изменить этот фрагмент кода в соответствии с вашими потребностями,Я использовал это как часть моего приложения.
Так что же будет делать этот код?При выполнении этот код будет подключаться к Google с вашим личным ключом API, который я назвал credentials.json.(Создайте свой собственный по адресу: https://developers.google.com/+/web/api/rest/oauth) После успешной аутентификации вы сможете получить доступ к листу Google с определенным идентификатором.