Я также столкнулся с той же проблемой, я исправил, используя следующие шаги
1.Включите Google Drive API в проекте
Войдите в консоль Google Cloud.Выберите свой проект из раскрывающегося списка.На левой навигационной панели выберите API & Services, затем выберите Dashboard.В верхней части страницы нажмите Включить API и службы.Используйте панель поиска для поиска Google Drive API, выберите его и нажмите «Включить».
2.Добавьте идентификатор клиента учетной записи службы в Google Sheet
В консоли Google Cloud Console выберите IAM & admin на левой боковой панели, а затем выберите учетные записи служб.Скопируйте значение в столбце идентификатора учетной записи службы.Если у вас еще нет учетной записи службы, следуйте приведенным выше инструкциям для подключения учетной записи BigQuery.
Откройте Google Sheet и нажмите кнопку «Поделиться».Нажмите «Дополнительно» внизу и в текстовом поле «Пригласить людей» введите значение идентификатора учетной записи службы, которое вы скопировали ранее.
3.Добавить область действия «облачная платформа»
GoogleCredentials cred = ServiceAccountCredentials
.fromStream(credentialsFile.getInputStream())
.createScoped(Arrays.asList("https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/cloud-platform"));
Код:
File credentialsFile = new File("credentials.json");
GoogleCredentials cred = ServiceAccountCredentials
.fromStream(new FileInputStream(credentialsFile))
.createScoped(Arrays.asList("https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/cloud-platform"));
BigQuery bigquery = BigQueryOptions.newBuilder()
.setCredentials(cred).build()
.getService();
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(
"SELECT * FROM `my_project.dataset.table1`")
// Use standard SQL syntax for queries.
// See: https://cloud.google.com/bigquery/sql-reference/
.setUseLegacySql(false)
.build();
// Create a job ID so that we can safely retry.
JobId jobId = JobId.of(UUID.randomUUID().toString());
Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
// Wait for the query to complete.
queryJob = queryJob.waitFor();
QueryResponse response = bigquery.getQueryResults(jobId);
TableResult result = queryJob.getQueryResults();
// Print all pages of the results.
for (FieldValueList row : result.iterateAll()) {
String date = row.get("Date").getStringValue();
System.out.printf("Date: %s%n", date);
}
Ссылка:
https://support.chartio.com/docs/data-sources/#google-sheets-via-bigquery