Sheets API(Google Sheets API)のQuickstart(チュートリアル)をJavaで実施してみる

f:id:ts0818:20210831195957j:plain

www.itmedia.co.jp

 人文学オープンデータ共同利用センター(CODH)は8月30日、古文書に書かれた「くずし字」をAIで解読するスマートフォンiOSAndroid)向け無料アプリ「みを」を公開した。元のくずし字と変換後の文字を比較でき、古文書に慣れてない人の理解を手助けするという。

AIで“くずし字”を解読するスマホアプリが無料公開 コンペ1位の認識モデル採用 - ITmedia NEWS

 AIの学習には、国文学研究資料館の日本古典籍くずし字データセットを基に、CODHが開発したくずし字認識モデル「KuroNet」(クロネット)と、機械学習の精度を競い合うプラットフォーム「Kaggle」(カグル)のくずし字認識コンペティションで1位になったtascj氏の認識モデルを活用している。くずし字は江戸時代のデータを基にしているため、違う時代の資料では精度が低下する可能性があるという。

AIで“くずし字”を解読するスマホアプリが無料公開 コンペ1位の認識モデル採用 - ITmedia NEWS

⇧ 時代が異なれば、通じないこともありますと、それを人は、ジェネレーションギャップという、どうもボクです。

とはいえ、「手書き文字」の認識も難易度が高いと思うのに、「くずし字」の認識ですか、驚き桃の木山椒の木ですな。

いつも通り、冒頭から話が脱線しましたが、今回は、「Sheets APIGoogle Sheets API)」について調べてみました。

レッツトライ~。

 

Google Sheets(Google Spreadsheet)って?

Wikipediaさんに聞いてみた。 

Google Sheets is a spreadsheet program included as part of the free, web-based Google Docs Editors suite offered by Google. The service also includes Google DocsGoogle SlidesGoogle DrawingsGoogle FormsGoogle Sites, and Google Keep. Google Sheets is available as a web applicationmobile app for AndroidiOSWindowsBlackBerry, and as a desktop application on Google's Chrome OS. The app is compatible with Microsoft Excel file formats.

https://en.wikipedia.org/wiki/Google_Sheets

⇧ ってなっていて、Google検索した感じだと、

f:id:ts0818:20210821153716p:plain

⇧ 「Google Sheets」が正式名称っぽいような気がしますな、いままで、ずっと「Google Spreadsheet」って認識だったけど、「Google Sheets」の「SpreadSheets」ってことなんですかね? 

 

Sheets APIGoogle Sheets API)って?

https://developers.google.com/」にアクセスして、

f:id:ts0818:20210821154655p:plain

画面を下の方にスクロールしていって、「View all developer products」ってボタンをクリックすると、

f:id:ts0818:20210821154800p:plain

https://developers.google.com/products」にページ遷移するので、また画面を下の方にスクロールしていって、

f:id:ts0818:20210821154355p:plain

アルファベット並んでるんで、「S」を選択して、

f:id:ts0818:20210821154520p:plain

ページ遷移するので、画面の下の方にスクロールしていって、

f:id:ts0818:20210821155205p:plain

「Sheets API」ってのがあるので選択。

f:id:ts0818:20210821155312p:plain

で、説明文を見ると、「The Google Sheets API lets you read, write, and format Google Sheets data with your preferred programming language, including Java, JavaScript, and Python.」ってなっていて、「Sheets API」が正しいのか「Google Sheets API」が正しいのか、よく分かりませんと...

とりあえず、「Reference documentation」を選択してみると、

f:id:ts0818:20210821154253p:plain

ページ遷移されて、 「To call this service, we recommend that you use the Google-provided client libraries. If your application needs to use your own libraries to call this service, use the following information when you make the API requests.」ってな説明があって、「client libraries」の使用を推奨って言っていて、

f:id:ts0818:20210821160006p:plain

⇧「Client Libraries」がサイドバーのほうに表示されていて、 っていうか、プルダウンを開いてみたら、「Java」「.Net」「Python」は「Core library」と「API library」の2つありますな...

f:id:ts0818:20210821162500p:plain

とりあえずは、 

で使えるらしい。 

「Browser」以外はサーバーサイド側で利用される言語だと思うけど、なんとなく有名どころの言語はカバーされてるっぽいですね。

将来的には、「Rust」とかでも利用できるようになるんかな?

 

JavaでSheets APIGoogle Sheets API)を利用してみる

世は大ビッグデータ時代、ってわけで、巷にはデータが溢れていますと。

そのような世相を鑑みるに、おそらく、昨今の用途としては、「Google Sheets(Google Spreadsheets)」に対して「集計したデータを書き込む」みたいな利用例が多いんかな?

どっちにしろ、問題になってくるのは、

  1. 新規でGoogle Sheetsを作成する
  2. 既存のGoogle Sheetsを編集する

みたいな感じで、「2.既存のGoogle Sheetsを編集する」のような、お客さんからファイルを連携されるパターンのほうが、「API(Application programing Interface)」の制約とかで泥沼にハマりそうに思えてしまいますな...

というわけで、

developers.google.com

⇧ を参考に、Javaで「Sheets APIGoogle Sheets API)」を利用してみます。

というか、「Google Maps Platform(旧:Google Maps API)」もそうだったけど、

Prerequisites

To run this quickstart, you need the following prerequisites:

  • Authorization credentials for a desktop application. To learn how to create credentials for a desktop application, refer to Create credentials.

https://developers.google.com/sheets/api/quickstart/java

⇧ もはや「GCPGoogle Cloud Platform)」が必須みたいになっとるやん...

それとも、「Quickstart」のサンプルにだけ必要なんかがよく分からん...

ドキュメントが分かり辛えな...

 

ちなみに、手前味噌でありますが、「Google Cloud API」と「Google API」で「API(Application programing Interface)」の「認証(Authentication)」が異なるというのを、

ts0818.hatenablog.com

⇧ 上記記事でまとめております。

ただ、Googleさんの公開してるドキュメントを読んでみても、「Google Cloud API」か「Google API」かどうかを判断する方法がハッキリしないんだけど、現状、「Google Cloud API」の全量は確認できるらしいので、「Google Cloud API」として認識されてないものは、すべて「Google API」って考えるしか無いっぽい。

cloud.google.com

このページでは、Google Cloud プロジェクトで有効になっている、または使用可能な API やサービスを一覧表示する方法について説明します。利用可能または有効になっている API やサービスの一覧には、Pub/Sub などの公開されている Google Cloud サービスと、Cloud Endpoints を使用して作成されたサービスのような、個人的に共有されている API やサービスの両方が含まれている可能性があります。公開 API と非公開 API サービスの相違について詳しくは、一般公開サービスと非公開サービスをご覧ください。

https://cloud.google.com/service-usage/docs/list-services#curl_1

⇧ ってなってるんで、「Google Cloud API」の全量は確認できるはず...

要するに、正確な情報を得たいなら「GCPGoogle Cloud Platform)」を使え、ってことみたいね...、何か忖度を強制する雰囲気が嫌な感じだな~...

あと、注意しないといけないのが、「Sheets APIGoogle Sheets API)」には、無料利用の制限があるってことですかね。

Usage Limits

This version of the Google Sheets API has a limit of 500 requests per 100 seconds per project, and 100 requests per 100 seconds per user. Limits for reads and writes are tracked separately. There is no daily usage limit.

To view or change usage limits for your project, or to request an increase to your quota, do the following:

  1. If you don't already have a billing account for your project, then create one.
  2. Visit the Enabled APIs page of the API library in the API Console, and select an API from the list.
  3. To view and change quota-related settings, select Quotas. To view usage statistics, select Usage.

https://developers.google.com/sheets/api/reference/limits

⇧ ドキュメントによると、「1つのプロジェクトで100秒間に500リクエストまで、且つ、1人のユーザーで100秒間に100リクエストまで」ってなっていて、それ以上の性能を求める場合は、有料対応してくれってことみたいね。

上記の範囲内であれば、

 (24×60×60)秒÷100秒 = 864回  

1日864回はAPIを叩けるってことかね。

何か、開発で試行錯誤してたら、上限を超えてしまいそうな気もしますな...

Google Maps Platform(旧:Google Maps API)」で感じたけど、最初に「無料」にしておいて痴れっと「制限付きの無料」に切り替えていくのは印象宜しくないんだけど、「Sheets APIGoogle Sheets API)」はどうなんだろう? 

ja.stackoverflow.com

早速ご回答いただきありがとうございます。請求アカウントの意図含め、納得いたしました。Google Cloud Platformの担当窓口へは以前問合せしていたのですが、扱っていないとの回答を受け、こちらに質問させていただいた次第です。正しくはG Suite管理者の問合せフォームへの問合せでしたのですね。大変助かりました。ありがとうございます。 – Takuya 20年7月15日 1:20

Google Sheets APIの利用料金について - スタック・オーバーフロー

⇧ ってな感じで、なんか、情報が錯綜してる感が半端ない...

脱線しましたが、何はともあれ、「GCPGoogle Cloud Platform)」を利用できる状況になったらば、「GCPGoogle Cloud Platform)」の管理画面にログインします。

GCPGoogle Cloud Platform)でプロジェクト作成

GCPGoogle Cloud Platform)」の管理画面にログイン後、「新しいプロジェクト」を作成します。

f:id:ts0818:20210822163914j:plain

f:id:ts0818:20210822164142j:plain

「プロジェクト名 *」を入力し、「プロジェクト ID」を変えたい場合は、「編集」を押下。 

f:id:ts0818:20210822164952j:plain

「プロジェクト ID *」を適当に入力し、「作成」を押下。

f:id:ts0818:20210822165003j:plain

プロジェクトが作成されたようです。 

f:id:ts0818:20210822165254j:plain

 

■利用するAPIを決める

作成したプロジェクトに切り替えておきます。

f:id:ts0818:20210822163914j:plain

f:id:ts0818:20210822170328j:plain

f:id:ts0818:20210822172020p:plain のアイコンをクリックして、「APIとサービス」 を選択。

f:id:ts0818:20210822171947p:plain

「+APIサービスの有効化」 を押下。

f:id:ts0818:20210822172337j:plain

検索欄に「Sheets API」と入力し、Enterキーを押下で。 

f:id:ts0818:20210822172617j:plain

検索結果で「Google Sheets API」が表示されたら、選択。 

f:id:ts0818:20210822173038j:plain

「有効にする」を押下。 

f:id:ts0818:20210822173049j:plain

Google Sheets API」が有効化されたようです。 

f:id:ts0818:20210822173240j:plain


GCPGoogle Cloud Platform)で「Sheets API」を利用するための「認証情報(Credential)」の作成

というか、

cloud.google.com

このトピックでは、テスト目的で Google Cloud API への認証を簡単に行う方法について説明します。Google Maps Platform API など、Google Cloud 以外の API の認証方法については説明しません。Google Maps Platform APISDK に使用する API キーについては、Google マップのドキュメントをご覧ください。

https://cloud.google.com/docs/authentication/getting-started

⇧ ってな感じで、

で「認証(Authentication)」が異なるらしいんで、まずは、「Sheets API」がどっちの「API(Application programing Interface)」になるのかを確認する必要がありますと。

GCPGoogle Cloud Platform)」の管理画面で、「CLOUD SHELL」ってのを起動して、以下のコマンドを実施

gcloud services list --available    

■一覧表示の結果

NAME                                                                                                 TITLE
abilitec-api.endpoints.liveramp-identity-public.cloud.goog                                           AbiliTec API
abusiveexperiencereport.googleapis.com                                                               Abusive Experience Report API
acceleratedmobilepageurl.googleapis.com                                                              Accelerated Mobile Pages (AMP) URL API
accessapproval.googleapis.com                                                                        Access Approval API
accesscontextmanager.googleapis.com                                                                  Access Context Manager API
actian-avalanche-hybrid-cloud-data-warehouse.endpoints.actian-public.cloud.goog                      Actian Avalanche Hybrid Cloud Data Warehouse
actions.googleapis.com                                                                               Actions API
activtrak-public.endpoints.activtrak-public.cloud.goog                                               ActivTrak
adexchangebuyer-json.googleapis.com                                                                  Ad Exchange Buyer API
adexchangebuyer.googleapis.com                                                                       Ad Exchange Buyer API II
adexchangeseller.googleapis.com                                                                      Ad Exchange Seller API
adexperiencereport.googleapis.com                                                                    Ad Experience Report API
admin.googleapis.com                                                                                 Admin SDK API
admob.googleapis.com                                                                                 AdMob API
adsense.googleapis.com                                                                               AdSense Management API
adsensehost.googleapis.com                                                                           AdSense Host API
aiplatform.googleapis.com                                                                            Vertex AI API
aiui.googleapis.com                                                                                  AI UI API
alertcenter.googleapis.com                                                                           Google Workspace Alert Center API
amwell-now.endpoints.amwell-marketplace-public.cloud.goog                                            Amwell Now
analytics.googleapis.com                                                                             Google Analytics API
analyticsadmin.googleapis.com                                                                        Google Analytics Admin API
analyticsdata.googleapis.com                                                                         Google Analytics Data API
analyticsreporting.googleapis.com                                                                    Analytics Reporting API
androidcheck.googleapis.com                                                                          Android Device Verification
androiddeviceprovisioning.googleapis.com                                                             Android Device Provisioning Partner API
androidenterprise.googleapis.com                                                                     Google Play EMM API
androidmanagement.googleapis.com                                                                     Android Management API
androidovertheair.googleapis.com                                                                     Android Over the Air API
androidpublisher.googleapis.com                                                                      Google Play Android Developer API
anthos.googleapis.com                                                                                Anthos API
anthosaudit.googleapis.com                                                                           Anthos Audit API
anthosconfigmanagement.googleapis.com                                                                Anthos Config Management API
anthosgke.googleapis.com                                                                             Anthos GKE API
anthosidentityservice.googleapis.com                                                                 Anthos Identity Service
apache-kafka-on-confluent-cloud.endpoints.confluent-isaas.cloud.goog                                 Apache Kafka® on Confluent Cloud™
apigateway.googleapis.com                                                                            API Gateway API
apigee.googleapis.com                                                                                Apigee API
apigeeconnect.googleapis.com                                                                         Apigee Connect API
apikeys.googleapis.com                                                                               API Keys API
appdevelopmentexperience.googleapis.com                                                              App Development Experience API
appengine.googleapis.com                                                                             App Engine Admin API
appengineflex.googleapis.com                                                                         Google App Engine Flexible Environment
appsmarket-component.googleapis.com                                                                  Google Workspace Marketplace SDK
appsmarket.googleapis.com                                                                            Google Workspace Marketplace API
arcorecloudanchor.googleapis.com                                                                     ARCore Cloud Anchor API
area120tables.googleapis.com                                                                         Area120 Tables API
artifactregistry.googleapis.com                                                                      Artifact Registry API
ascend-io-standard.endpoints.ascend-io-marketplace-public.cloud.goog                                 Ascend.io Unified Data Engineering Platform
asr.endpoints.knowlarity-public.cloud.goog                                                           Programmable Speech Analytics
assuredworkloads.googleapis.com                                                                      Assured Workloads API
audit.googleapis.com                                                                                 Audit API
automation-360-bot-agent.endpoints.automationanywhere-public.cloud.goog                              Automation 360 Bot Agent
automation-360.endpoints.automationanywhere-public.cloud.goog                                        Automation 360
automl.googleapis.com                                                                                Cloud AutoML API
autoscaling.googleapis.com                                                                           Cloud Autoscaling API
baremetalsolution.googleapis.com                                                                     Bare Metal Solution API
bettercloud1.endpoints.bettercloud-marketplace-public.cloud.goog                                     BetterCloud
bigquery.googleapis.com                                                                              BigQuery API
bigqueryconnection.googleapis.com                                                                    BigQuery Connection API
bigquerydatatransfer.googleapis.com                                                                  BigQuery Data Transfer API
bigqueryreservation.googleapis.com                                                                   BigQuery Reservation API
bigquerystorage.googleapis.com                                                                       BigQuery Storage API
bigtable.googleapis.com                                                                              Cloud Bigtable API
bigtableadmin.googleapis.com                                                                         Cloud Bigtable Admin API
bigtabletableadmin.googleapis.com                                                                    Cloud Bigtable Table Admin API
billingbudgets.googleapis.com                                                                        Cloud Billing Budget API
binaryauthorization.googleapis.com                                                                   Binary Authorization API
blogger.googleapis.com                                                                               Blogger API v3
books.googleapis.com                                                                                 Books API
bookstore.endpoints.endpoints-portal-demo.cloud.goog                                                 Bookstore gRPC API
bp-accelerators-for-sap-byol.endpoints.msrcosmos-public.cloud.goog                                   Blue Prism® Accelerators for use with SAP® ERP (BYOL)
bp-accelerators-for-sap.endpoints.msrcosmos-public.cloud.goog                                        Blue Prism® Accelerators for use with SAP® ERP
caldav.googleapis.com                                                                                CalDAV API
calendar-json.googleapis.com                                                                         Google Calendar API
carddav.googleapis.com                                                                               Google Contacts CardDAV API
cdp-for-gcp.endpoints.gcp-cdp-marketplace-public.cloud.goog                                          Cloudera Data Platform (CDP)
charon-ssp-virtual-sparc.endpoints.stromasys-public.cloud.goog                                       Charon SSP Virtual SPARC
chat.googleapis.com                                                                                  Hangouts Chat API
chromemanagement.googleapis.com                                                                      Chrome Management API
chromepolicy.googleapis.com                                                                          Chrome Policy API
chromeuxreport.googleapis.com                                                                        Chrome UX Report API
chromewebstore.googleapis.com                                                                        Chrome Web Store API
civicinfo.googleapis.com                                                                             Google Civic Information API
classroom.googleapis.com                                                                             Google Classroom API
cloud-managed-services.endpoints.opentext-public.cloud.goog                                          Cloud Managed Services
cloud.googleapis.com                                                                                 Service Metadata API
cloudapis.googleapis.com                                                                             Google Cloud APIs
cloudasset.googleapis.com                                                                            Cloud Asset API
cloudbilling.googleapis.com                                                                          Cloud Billing API
cloudbuild.googleapis.com                                                                            Cloud Build API
cloudchannel.googleapis.com                                                                          Cloud Channel API
clouddataprep.trifacta.com                                                                           Clouddataprep by Trifacta
clouddebugger.googleapis.com                                                                         Cloud Debugger API
clouderrorreporting.googleapis.com                                                                   Error Reporting API
cloudfunctions.googleapis.com                                                                        Cloud Functions API
cloudidentity.googleapis.com                                                                         Cloud Identity API
cloudiot.googleapis.com                                                                              Cloud IoT API
cloudkms.googleapis.com                                                                              Cloud Key Management Service (KMS) API
cloudlatencytest.googleapis.com                                                                      Cloud Network Performance Monitoring API
cloudprivatecatalog.googleapis.com                                                                   Cloud Private Catalog API
cloudprofiler.googleapis.com                                                                         Stackdriver Profiler API
cloudresourcemanager.googleapis.com                                                                  Cloud Resource Manager API
cloudscheduler.googleapis.com                                                                        Cloud Scheduler API
cloudsearch.googleapis.com                                                                           Cloud Search API
cloudshell.googleapis.com                                                                            Cloud Shell API
cloudtasks.googleapis.com                                                                            Cloud Tasks API
cloudtrace.googleapis.com                                                                            Cloud Trace API
cloudvideosearch.googleapis.com                                                                      Video Search API
cloudvolumesgcp-api.netapp.com                                                                       NetApp Cloud Volumes API
cmca-elk-ubuntu.endpoints.classmethod-can-public.cloud.goog                                          ELK
collibra-for-gcp-collibra-marketplace-public.cloudpartnerservices.goog                               Collibra Data Intelligence Cloud Reporting Service
commercetools-platform.endpoints.commercetools-public.cloud.goog                                     Commercetools Platform
commvaultcomplete-cvlt-marketplace-public.cloudpartnerservices.goog                                  CommvaultComplete Reporting Service
composer.googleapis.com                                                                              Cloud Composer API
compute.googleapis.com                                                                               Compute Engine API
conductor.endpoints.conductor-public.cloud.goog                                                      Conductor Cloud Rendering
connectgateway.googleapis.com                                                                        Connect Gateway API
contactcenterinsights.googleapis.com                                                                 Contact Center AI Insights API
contacts.googleapis.com                                                                              Contacts API
container.googleapis.com                                                                             Kubernetes Engine API
containeranalysis.googleapis.com                                                                     Container Analysis API
containerfilesystem.googleapis.com                                                                   Container File System API
containerregistry.googleapis.com                                                                     Container Registry API
containerscanning.googleapis.com                                                                     Container Scanning API
containerthreatdetection.googleapis.com                                                              Container Threat Detection API
copresence.googleapis.com                                                                            Nearby Messages API
cortex-xdr-paloaltonetworks-public.cloudpartnerservices.goog                                         Palo Alto Networks, Inc. Cortex-XDR Reporting Service
cortex-xpanse.endpoints.paloaltonetworks-public.cloud.goog                                           Cortex Xpanse
customsearch.googleapis.com                                                                          Custom Search API
cysiv-soc-as-a-service.endpoints.cysiv-public.cloud.goog                                             Cysiv SOC-as-a-Service
databricks.endpoints.databricks-prod-master.cloud.goog                                               Databricks
datacatalog.googleapis.com                                                                           Google Cloud Data Catalog API
datadog-private.endpoints.datadog-public.cloud.goog                                                  Datadog Private Plans
datadog-public.endpoints.datadog-public.cloud.goog                                                   Datadog
dataflow.googleapis.com                                                                              Dataflow API
datafusion.googleapis.com                                                                            Cloud Data Fusion API
datalabeling.googleapis.com                                                                          Data Labeling API
datamask.endpoints.softserve-public.cloud.goog                                                       DATAMASK
datamigration.googleapis.com                                                                         Database Migration API
datapipelines.googleapis.com                                                                         Data pipelines API
dataproc.googleapis.com                                                                              Cloud Dataproc API
datastore.googleapis.com                                                                             Cloud Datastore API
datastream.googleapis.com                                                                            Datastream API
datastudio.googleapis.com                                                                            Data Studio API
datometry-hyper-q-for-bigquery.endpoints.datometry-public.cloud.goog                                 Datometry Hyper-Q for BigQuery
dell-dps-plus.endpoints.dellemc-ddve-public.cloud.goog                                               dell-dps-plus
deploymentmanager.googleapis.com                                                                     Cloud Deployment Manager V2 API
dfareporting.googleapis.com                                                                          Campaign Manager 360 API
dialogflow.googleapis.com                                                                            Dialogflow API
digitalassetlinks.googleapis.com                                                                     Digital Asset Links API
directions-backend.googleapis.com                                                                    Directions API
discovery.googleapis.com                                                                             API Discovery Service
displayvideo.googleapis.com                                                                          Display & Video 360 API
distance-matrix-backend.googleapis.com                                                               Distance Matrix API
dlp.googleapis.com                                                                                   Cloud Data Loss Prevention (DLP) API
dns.googleapis.com                                                                                   Cloud DNS API
docs.googleapis.com                                                                                  Google Docs API
documentai.googleapis.com                                                                            Cloud Document AI API
domains.googleapis.com                                                                               Cloud Domains API
domainsrdap.googleapis.com                                                                           Domains RDAP API
doubleclickbidmanager.googleapis.com                                                                 DoubleClick Bid Manager API
doubleclicksearch.googleapis.com                                                                     Search Ads 360 API
drive.googleapis.com                                                                                 Google Drive API
driveactivity.googleapis.com                                                                         Drive Activity API
echo-api.endpoints.endpoints-portal-demo.cloud.goog                                                  Endpoints Example
edgecache.googleapis.com                                                                             Global Edge Cache Service
elasticsearch-service.gcpmarketplace.elastic.co                                                      Elasticsearch Service on Elastic Cloud - Standard
elevation-backend.googleapis.com                                                                     Maps Elevation API
embeddedassistant.googleapis.com                                                                     Google Assistant API
endpoints.googleapis.com                                                                             Google Cloud Endpoints
endpointsportal.googleapis.com                                                                       Cloud Endpoints Portal
engagement-cdp-marketing-automation.endpoints.bloomreach-public.cloud.goog                           Engagement (CDP, Marketing Automation)
essentialcontacts.googleapis.com                                                                     Essential Contacts API
eventarc.googleapis.com                                                                              Eventarc API
factchecktools.googleapis.com                                                                        Fact Check Tools API
fcm.googleapis.com                                                                                   Firebase Cloud Messaging API
fcmdata.googleapis.com                                                                               Firebase Cloud Messaging Data API
fcmregistrations.googleapis.com                                                                      FCM Registration API
file.googleapis.com                                                                                  Cloud Filestore API
firebase.googleapis.com                                                                              Firebase Management API
firebaseappcheck.googleapis.com                                                                      Firebase App Check API
firebaseappdistribution.googleapis.com                                                               Firebase App Distribution API
firebaseapptesters.googleapis.com                                                                    Firebase App Testers API
firebasedatabase.googleapis.com                                                                      Firebase Realtime Database Management API
firebasedynamiclinks.googleapis.com                                                                  Firebase Dynamic Links API
firebaseextensions.googleapis.com                                                                    Firebase Extensions API
firebasehosting.googleapis.com                                                                       Firebase Hosting API
firebaseinappmessaging.googleapis.com                                                                Firebase In-App Messaging API
firebaseinstallations.googleapis.com                                                                 Firebase Installations API
firebaseml.googleapis.com                                                                            Firebase ML API
firebasepredictions.googleapis.com                                                                   Firebase Predictions API
firebaseremoteconfig.googleapis.com                                                                  Firebase Remote Config API
firebaserules.googleapis.com                                                                         Firebase Rules API
firebasestorage.googleapis.com                                                                       Cloud Storage for Firebase API
firestore.googleapis.com                                                                             Cloud Firestore API
firewallinsights.googleapis.com                                                                      Firewall Insights API
fitness.googleapis.com                                                                               Fitness API
fivetran-marketplace.gcpmarketplace.fivetran.com                                                     Fivetran Data Pipelines Reporting Service
fusion.endpoints.lucidworks-public.cloud.goog                                                        Fusion
games.googleapis.com                                                                                 Google Play Game Services
gamesconfiguration.googleapis.com                                                                    Google Play Game Services Publishing API
gameservices.googleapis.com                                                                          Game Services API
gamesmanagement.googleapis.com                                                                       Google Play Game Management
gcp.redisenterprise.com                                                                              Redis Enterprise
gcpmarketplace.cloudmanager.netapp.com                                                               NetApp, Inc. Cloud Manager for Cloud Volumes ONTAP Reporting Service
genomics.googleapis.com                                                                              Genomics API
geocoding-backend.googleapis.com                                                                     Geocoding API
geolocation.googleapis.com                                                                           Geolocation API
gitlab-for-gcp-gitlab-public.cloudpartnerservices.goog                                               GitLab Reporting Service
gkeconnect.googleapis.com                                                                            GKE Connect API
gkehub.googleapis.com                                                                                GKE Hub API
gmail.googleapis.com                                                                                 Gmail API
gmailpostmastertools.googleapis.com                                                                  Gmail Postmaster Tools API
googleads.googleapis.com                                                                             Google Ads API
googlecloudmessaging.googleapis.com                                                                  Cloud Messaging
grafana-cloud-commit.endpoints.grafana-public.cloud.goog                                             Grafana Cloud Commit
gridspace-sift-for-gcp.endpoints.gridspace-marketplace-public.cloud.goog                             Gridspace Sift
groupby-product-discovery-suite.endpoints.groupbyinc-marketplace-public.cloud.goog                   GroupBy Product Discovery Suite
groupsmigration.googleapis.com                                                                       Groups Migration API
groupssettings.googleapis.com                                                                        Groups Settings API
gsuiteaddons.googleapis.com                                                                          Google Workspace Add-ons API
hashicorp-consul-gcp-hashicorp-marketplace-public.cloudpartnerservices.goog                          HashiCorp Consul Reporting Service
hashicorp-for-gcp-hashicorp-marketplace-public.cloudpartnerservices.goog                             HashiCorp Terraform Enterprise Reporting Service
hashicorp-vault-gcp-hashicorp-marketplace-public.cloudpartnerservices.goog                           HashiCorp Vault Reporting Service
hcl-cotrust.endpoints.hcl-cotrust-public.cloud.goog                                                  HCL CoTrust
healthcare.googleapis.com                                                                            Cloud Healthcare API
homegraph.googleapis.com                                                                             HomeGraph API
iam.googleapis.com                                                                                   Identity and Access Management (IAM) API
iamcredentials.googleapis.com                                                                        IAM Service Account Credentials API
iap.googleapis.com                                                                                   Cloud Identity-Aware Proxy API
ideahub.googleapis.com                                                                               Idea Hub API
identitytoolkit.googleapis.com                                                                       Identity Toolkit API
ids.googleapis.com                                                                                   Cloud IDS API
iics-prod.gcpmarketplace.informaticacloud.com                                                        Informatica Intelligent Cloud Services Reporting Service
indexing.googleapis.com                                                                              Indexing API
informatica-enterprise-data-catalog-license-subscription.endpoints.infamarketplace.cloud.goog        Informatica Enterprise Data Catalog License Subscription
insightfinder-unified-intelligence-engine-uie.endpoints.insightfinder-public.cloud.goog              InsightFinder Unified Intelligence Engine (UIE)
ionq.endpoints.ionq-public.cloud.goog                                                                IonQ Quantum Cloud
jobs.googleapis.com                                                                                  Cloud Talent Solution API
keep.googleapis.com                                                                                  Google Keep API
kgsearch.googleapis.com                                                                              Knowledge Graph Search API
krmapihosting.googleapis.com                                                                         KRM API Hosting API
labelbox-product-gcp.endpoints.labelbox-tackle-public.cloud.goog                                     Labelbox
language.googleapis.com                                                                              Cloud Natural Language API
libraryagent.googleapis.com                                                                          Library Agent API
licensing.googleapis.com                                                                             Enterprise License Manager API
lifesciences.googleapis.com                                                                          Cloud Life Sciences API
localservices.googleapis.com                                                                         Local Services API
logging.googleapis.com                                                                               Cloud Logging API
lookout-security-platform.endpoints.lookout-public.cloud.goog                                        Lookout Security Platform
mailgun.endpoints.mailgun-public.cloud.goog                                                          Mailgun by Pathwire
managedidentities.googleapis.com                                                                     Managed Service for Microsoft Active Directory API
manufacturers.googleapis.com                                                                         Manufacturer Center API
maps-android-backend.googleapis.com                                                                  Maps SDK for Android
maps-backend.googleapis.com                                                                          Maps JavaScript API
maps-embed-backend.googleapis.com                                                                    Maps Embed API
maps-ios-backend.googleapis.com                                                                      Maps SDK for iOS
matossphere.endpoints.cloudmatos-public.cloud.goog                                                   MatosSphere
mediatranslation.googleapis.com                                                                      Media Translation API
memcache.googleapis.com                                                                              Cloud Memorystore for Memcached API
meshca.googleapis.com                                                                                Anthos Service Mesh Certificate Authority API
meshconfig.googleapis.com                                                                            Mesh Configuration API
meshtelemetry.googleapis.com                                                                         Mesh Telemetry API
metastore.googleapis.com                                                                             Dataproc Metastore API
migrate.googleapis.com                                                                               Google Workspace Migrate API
ml.googleapis.com                                                                                    AI Platform Training & Prediction API
mlkit.googleapis.com                                                                                 ML Kit API
mobilecrashreporting.googleapis.com                                                                  Mobile Crash Reporting API
monitoring.googleapis.com                                                                            Cloud Monitoring API
moviesanywhere.googleapis.com                                                                        Play Movies Anywhere API
multiclusteringress.googleapis.com                                                                   Multi Cluster Ingress API
multiclustermetering.googleapis.com                                                                  Multi cluster metering API
multiclusterservicediscovery.googleapis.com                                                          Multi-Cluster Service Discovery API
mux-video.endpoints.mux-public.cloud.goog                                                            Mux Video
mybusinessaccountmanagement.googleapis.com                                                           My Business Account Management API
mybusinessbusinessinformation.googleapis.com                                                         My Business Business Information API
mybusinesslodging.googleapis.com                                                                     My Business Lodging API
mybusinessnotifications.googleapis.com                                                               My Business Notifications API
mybusinessplaceactions.googleapis.com                                                                My Business Place Actions API
mybusinessverifications.googleapis.com                                                               My Business Verifications API
nasuni-edge-appliance.endpoints.nasuni-public.cloud.goog                                             Nasuni Edge Appliance
nasuni-files-for-google-cloud-platform.endpoints.nasuni-public.cloud.goog                            Nasuni Files for Google Cloud Platform
nasuni-for-gcp.endpoints.nasuni-public.cloud.goog                                                    Nasuni Cloud File Services
nasuni-management-console.endpoints.nasuni-public.cloud.goog                                         Nasuni Management Console
neo4j-aura-gcp.endpoints.neo4j-aura-gcp.cloud.goog                                                   Neo4j Aura Enterprise Database-as-a-Service
netscout-application-performance-management-for-gcp.endpoints.netscout-apm-public-228718.cloud.goog  NETSCOUT Application Performance Management for GCP
networkconnectivity.googleapis.com                                                                   Network Connectivity API
networkmanagement.googleapis.com                                                                     Network Management API
networksecurity.googleapis.com                                                                       Network Security API
networkservices.googleapis.com                                                                       Network Services API
networktopology.googleapis.com                                                                       Network Topology API
notebooks.googleapis.com                                                                             Notebooks API
o9-solutions.endpoints.o9solutions-public.cloud.goog                                                 o9 Solutions
ondemandscanning.googleapis.com                                                                      On-Demand Scanning API
opsconfigmonitoring.googleapis.com                                                                   Config Monitoring for Ops API
orcasecurity-for-gcp.endpoints.orca-security-public.cloud.goog                                       Orca Security
orgpolicy.googleapis.com                                                                             Organization Policy API
osconfig.googleapis.com                                                                              OS Config API
oslogin.googleapis.com                                                                               Cloud OS Login API
pagespeedonline.googleapis.com                                                                       PageSpeed Insights API
panos-paloaltonetworks-public.cloudpartnerservices.goog                                              Palo Alto Networks, Inc. panos Reporting Service
pantheon-webops.endpoints.pantheon-market-public.cloud.goog                                          Pantheon WebOps
partners-json.googleapis.com                                                                         Google Partners API
payg-prod.gcpmarketplace.confluent.cloud                                                             Confluent Cloud Service Prod
paymentsresellersubscription.googleapis.com                                                          Payments Reseller Subscription API
pendo-io-gcp.endpoints.pendo-marketplace-public.cloud.goog                                           Pendo.IO
people.googleapis.com                                                                                People API
performanceparameters.googleapis.com                                                                 Android Performance Parameters API
permission.io-full-node.endpoints.permission-public.cloud.goog                                       Permission.Io Full Node
permission.io-mining-node.endpoints.permission-public.cloud.goog                                     Permission.io Mining Node
photoslibrary.googleapis.com                                                                         Photos Library API
picker.googleapis.com                                                                                Google Picker API
pilot-single-node.endpoints.clearbladegcp-public.cloud.goog                                          Intelligent Assets
places-backend.googleapis.com                                                                        Places API
plainsight-vision-ai.endpoints.plainsight-public.cloud.goog                                          Plainsight
playablelocations.googleapis.com                                                                     Playable Locations API
playcustomapp.googleapis.com                                                                         Google Play Custom App Publishing API
plus.googleapis.com                                                                                  Google+ API
plusdomains.googleapis.com                                                                           Google+ Domains API
plushangouts.googleapis.com                                                                          Google+ Hangouts API
policyanalyzer.googleapis.com                                                                        Policy Analyzer API
policysimulator.googleapis.com                                                                       Policy Simulator API
policytroubleshooter.googleapis.com                                                                  Policy Troubleshooter API
poly.googleapis.com                                                                                  Poly API
prisma-access-paloaltonetworks-public.cloudpartnerservices.goog                                      Palo Alto Networks, Inc. Cortex-XDR Reporting Service
prisma-cloud-compute-paloaltonetworks-public.cloudpartnerservices.goog                               Palo Alto Networks, Inc. Prisma Cloud Compute Reporting Service
privateca.googleapis.com                                                                             Certificate Authority API
prod-tt-sasportal.googleapis.com                                                                     SAS Portal API (Testing)
prod.cloud.datastax.com                                                                              DataStax Astra - Cassandra as a Service
prod.n4gcp.neo4j.io                                                                                  Neo4j GCP Integration Service (Prod)
programmablesearchelement.googleapis.com                                                             Programmable Search Element Paid API
publicca.googleapis.com                                                                              Public Certificate Authority API
pubsub.googleapis.com                                                                                Cloud Pub/Sub API
pubsublite.googleapis.com                                                                            Pub/Sub Lite API
quantum-metric-quantum-metric-llc-public.cloudpartnerservices.goog                                   Quantum Metric Reporting Service
real-time-continuous-optimization.endpoints.granulate-public.cloud.goog                              Real Time Continuous Optimization
realtime.googleapis.com                                                                              Realtime API
realtimebidding.googleapis.com                                                                       Real-time Bidding API
recaptchaenterprise.googleapis.com                                                                   reCAPTCHA Enterprise API
recommendationengine.googleapis.com                                                                  Recommendations AI (Beta)
recommender.googleapis.com                                                                           Recommender API
redis.googleapis.com                                                                                 Google Cloud Memorystore for Redis API
remotebuildexecution.googleapis.com                                                                  Remote Build Execution API
replicapool.googleapis.com                                                                           Compute Engine Instance Group Manager API
replicapoolupdater.googleapis.com                                                                    Compute Engine Instance Group Updater API
reputation-for-gcp.endpoints.reputation-public.cloud.goog                                            Reputation
reseller.googleapis.com                                                                              Google Workspace Reseller API
resolve-studio-17.endpoints.blackmagicdesign-public.cloud.goog                                       Resolve Studio 17
resourcesettings.googleapis.com                                                                      Resource Settings API
resourceviews.googleapis.com                                                                         Compute Engine Instance Groups API
retail.googleapis.com                                                                                Retail API
risc.googleapis.com                                                                                  RISC API
roads.googleapis.com                                                                                 Roads API
run.googleapis.com                                                                                   Cloud Run Admin API
runtimeconfig.googleapis.com                                                                         Cloud Runtime Configuration API
safebrowsing-json.googleapis.com                                                                     Safe Browsing API (Legacy)
safebrowsing.googleapis.com                                                                          Safe Browsing API
sasportal.googleapis.com                                                                             SAS Portal API
schedmd-slurm-gcp.endpoints.schedmd-slurm-public.cloud.goog                                          schedmd-slurm-gcp
script.googleapis.com                                                                                Apps Script API
sd-wan-paloaltonetworks-public.cloudpartnerservices.goog                                             Palo Alto Networks, Inc. sd-wan Reporting Service
searchconsole.googleapis.com                                                                         Google Search Console API
secretmanager.googleapis.com                                                                         Secret Manager API
securedlandingzone.googleapis.com                                                                    Secured Landing Zone API
securetoken.googleapis.com                                                                           Token Service API
securitycenter.googleapis.com                                                                        Security Command Center API
seismicgcpmarketplace.endpoints.seismic-marketplace-id-public.cloud.goog                             Seismic Sales Enablement Platform
semarchy-xdm-quick-start-vm.endpoints.semarchy-xdm-public.cloud.goog                                 Semarchy xDM - Quick Start VM
serviceconsumermanagement.googleapis.com                                                             Service Consumer Management API
servicecontrol.googleapis.com                                                                        Service Control API
servicedirectory.googleapis.com                                                                      Service Directory API
servicemanagement.googleapis.com                                                                     Service Management API
servicenetworking.googleapis.com                                                                     Service Networking API
serviceusage.googleapis.com                                                                          Service Usage API
sheets.googleapis.com                                                                                Google Sheets API
shoppingcontent.googleapis.com                                                                       Content API for Shopping
simvm.endpoints.simvm-prod.cloud.goog                                                                SimVM
siteverification.googleapis.com                                                                      Site Verification API
slides.googleapis.com                                                                                Google Slides API
slower-first-barrier-gcp.endpoints.slower-public.cloud.goog                                          Slower: First Barrier
smartdevicemanagement.googleapis.com                                                                 Smart Device Management API
smbstorefront.googleapis.com                                                                         SMB Storefront API
soundcommerce.endpoints.soundcommerce-partner-public.cloud.goog                                      SoundCommerce
sourcerepo.googleapis.com                                                                            Cloud Source Repositories API
spanner.googleapis.com                                                                               Cloud Spanner API
speech.googleapis.com                                                                                Cloud Speech-to-Text API
splunk-cloud-gcp-marketplace-lve-1.cloudpartnerservices.goog                                         Splunk Cloud Reporting Service
sql-component.googleapis.com                                                                         Cloud SQL
sqladmin.googleapis.com                                                                              Cloud SQL Admin API
stackdriver.googleapis.com                                                                           Stackdriver API
static-maps-backend.googleapis.com                                                                   Maps Static API
storage-api.googleapis.com                                                                           Google Cloud Storage JSON API
storage-component.googleapis.com                                                                     Cloud Storage
storage.googleapis.com                                                                               Cloud Storage API
storagetransfer.googleapis.com                                                                       Storage Transfer API
street-view-image-backend.googleapis.com                                                             Street View Static API
streetviewpublish.googleapis.com                                                                     Street View Publish API
sts.googleapis.com                                                                                   Security Token Service API
subscribewithgoogle.googleapis.com                                                                   Subscribe with Google Publication API
subscribewithgoogledeveloper.googleapis.com                                                          Subscribe with Google Developer API
surveys.googleapis.com                                                                               Google Surveys API
sysdig-secure-devops-platform.endpoints.sysdig-public.cloud.goog                                     Sysdig Secure DevOps Platform
tagmanager.googleapis.com                                                                            Tag Manager API
tamr-gcp.endpoints.tamr-public.cloud.goog                                                            Tamr
tapclicks.endpoints.tc-gcp-marketplace-public.cloud.goog                                             TapClicks
tasks.googleapis.com                                                                                 Tasks API
ternary-for-gcp.endpoints.ternary-marketplace-public.cloud.goog                                      Ternary
testing.googleapis.com                                                                               Cloud Testing API
texttospeech.googleapis.com                                                                          Cloud Text-to-Speech API
thiago-vm-for-migration-partnerdemotest.cloudpartnerservices.goog                                    Partner Demo Test thiago-vm-for-migration
tigergraph-cloud-saas.endpoints.tigergraph-public.cloud.goog                                         TigerGraph Cloud
timezone-backend.googleapis.com                                                                      Time Zone API
toolresults.googleapis.com                                                                           Cloud Tool Results API
tpu.googleapis.com                                                                                   Cloud TPU API
trafficdirector.googleapis.com                                                                       Traffic Director API
transcoder.googleapis.com                     Transcoder API
translate.googleapis.com                     Cloud Translation API
travelpartner.googleapis.com                     Travel Partner API
unbxd-search-browse-and-recommendations.endpoints.unbxd-marketplace-public.cloud.goog                Unbxd Search, Browse and Recommendations
usercontext.googleapis.com                     Awareness API
vault.googleapis.com                     G Suite Vault API
vectortile.googleapis.com                     Semantic Tile API
verifiedaccess.googleapis.com                     Chrome Verified Access API
videointelligence.googleapis.com                     Cloud Video Intelligence API
vision.googleapis.com                     Cloud Vision API
vm-series-byol-ela-private-offer1-paloaltonetworks-public.cloudpartnerservices.goog                  Palo Alto Networks, Inc. VM-Series Next-Generation Firewall BYOL ELA Reporting Service
vmmigration.googleapis.com                     VM Migration API
vmwareengine.googleapis.com                     VMware Engine API
vpcaccess.googleapis.com                     Serverless VPC Access API
walletobjects.googleapis.com                     Google Pay Passes APIwebfonts.googleapis.com                     Web Fonts Developer API
webrisk.googleapis.com                     Web Risk APIwebsecurityscanner.googleapis.com                     Web Security Scanner API
workflowexecutions.googleapis.com                     Workflow Executions API
workflows.googleapis.com                     Workflows API
workspan-co-sell-partners.endpoints.workspan-public.cloud.goog                     WorkSpan Co-Sell with Partners
xsoar-paloaltonetworks-public.cloudpartnerservices.goog                     Palo Alto Networks, Inc. xsoar Reporting Service
youtube.googleapis.com                     YouTube Data API v3
youtubeanalytics.googleapis.com                     YouTube Analytics API
youtubeoembed.googleapis.com                     YouTube oEmbed API
youtubereporting.googleapis.com                     YouTube Reporting API
yugabyte-cloud-gcp.endpoints.yugabyte-mp-public.cloud.goog                     Yugabyte Cloud    

f:id:ts0818:20210828135804j:plain

その結果、

sheets.googleapis.com                                                                                Google Sheets API    

⇧ 表示された結果の中に、「Sheets APIGoogle Sheets API)」が含まれていたので「Sheets APIGoogle Sheets API)」は、「Google Cloud API」ってことになるんかな?

で、「Sheets APIGoogle Sheets API)」は、「Google Spreadsheets」を操作するもので、「Google Spreadsheets」ってのは「Google Drive」で扱ってるデータだと思われるので、

developers.google.com

Data type

In the context of authentication and authorization, data type refers to the entity that owns the data that your app is trying to access. There are three data types:

Public domain data
Data accessible by anyone, such as some Google maps data. This data is usually accessed using an API key.
End-user data
Data belonging to a specific end user or group, such as a specific user's Google Drive files. This data type is usually accessed using an OAuth 2 client ID or service account.
Cloud data
Data owned by a cloud project. This data type is usually accessed by a service account.

https://developers.google.com/workspace/guides/auth-overview?hl=ja

⇧ 「End-user data」に該当すると思われるので、

cloud.google.com

⇧ さらに「Google Cloud 環境外」から「Sheets APIGoogle Sheets API)」を呼び出すケースだと、

End-user data = 限定公開データ 

という前提が正しいとした仮定が矛盾しない場合、

  • OAuth 2.0 クライアント

の「認証情報(Credential)」を作成する感じになるんかな?

一応、「Quickstart」の手順で「認証情報(Credential)」については、

Credentials are used to obtain an access token from a Google authorization server. This token is used to call Google Workspace APIs. The type of credentials you use depends on the type of data your app accesses. All Google Workspace APIs access data owned by an end-user. You can use either an OAuth client ID or a service account with domain delegation of authority to access user data.

https://developers.google.com/workspace/guides/create-credentials

⇧ ってな感じで、「All Google Workspace APIs access data owned by an end-user」なので「OAuth client ID」または「service account」のどっちかを使えって言っておりますな。

ただ、

cloud.google.com

Google Cloud APIs では、ユーザー アカウントとサービス アカウントの認証の両方に、OAuth 2.0 プロトコルが使用されます。OAuth 2.0 を使用した認証プロセスにより、プリンシパルとアプリケーションの両方を識別します。

https://cloud.google.com/docs/authentication?hl=ja&_ga=2.200116134.-988189258.1629356381

⇧「サービスアカウント」の認証には「OAuth 2.0 プロトコル」が使われるらしい。

「OAuth 2.0」のドキュメントによると、

openid-foundation-japan.github.io

3.2.1. クライアント認証

クライアントは, トークンエンドポイントへのリクエスト時に自身を識別するために, client_id パラメーターを用いてもよい (MAY). トークンエンドポイントへのリクエスト時に authorization_code grant_type を指定する場合, 認証を行わないクライアントは, リクエストに client_id を含み, 異なる client_id に対して発行されたコードを不用意に受け入れてしまうことを防がなければならない (MUST). これはクライアントに対する認可コード置換攻撃への対策となる (保護リソースに対してのセキュリティ対策は提供していない).

https://openid-foundation-japan.github.io/rfc6749.ja.html#token-endpoint-auth

⇧ おそらく、「client_id パラメーター」ってのが、「Google Cloud API」の「認証情報(Credential)」の1つ「OAuth client ID」に該当するんじゃないかと。

脱線しましたが、今回は、「OAuth client ID」を試してみます。

GCPGoogle Cloud Platform)」の管理画面の f:id:ts0818:20210829104406p:plain を押下して、サイドバーのメニューが表示されたら、「APIとサービス」>「認証情報」を選択。

f:id:ts0818:20210822170543p:plain

■「OAuth 同期画面」の設定

「同期画面を設定」を選択。

f:id:ts0818:20210829154520j:plain

ラジオボタンは「外部」しか選択できないっぽい。「作成」を押下で。

f:id:ts0818:20210829154503j:plain

とりあえず、「*」マークが付いてる項目は入力が必須っぽいけど、それ以外は入力しなくても問題はないらしい。「保存して次へ」を押下。

f:id:ts0818:20210829154541j:plain

f:id:ts0818:20210829154550j:plain

ここは特に何も追加してません。「保存して次へ」を押下。

f:id:ts0818:20210829154720p:plain

ここも特に何も追加してません。「保存して次へ」を押下。

f:id:ts0818:20210829154804p:plain

「OAuth 同意画面」の設定が完了します。(編集でいつでも内容を修正できるっぽいですね)

f:id:ts0818:20210829155108j:plain

■「認証情報(Credential)」の作成

GCPGoogle Cloud Platform)」の管理画面のサイドバーで「APIとサービス」>「認証情報」を選択し、「+認証情報の作成」を押下。

f:id:ts0818:20210829155810j:plain

「OAuth クライアントID」を選択で。

f:id:ts0818:20210829155820j:plain

「アプリケーションの種類 *」で「ウェブ アプリケーション」を選択。

f:id:ts0818:20210829155600p:plain

「承認済みのリダイレクトURI」に適当な「URI」を入力しといた方が良いらしい。

www.y-hakopro.com

ここの「承認済みのリダイレクト URI」はこのあと出てくるリフレッシュトークンを取得するために必要。ただしURLはなんでも良い(詳しくは後述)のでlocalhostで登録する人が多い印象。

【Google APIs】OAuth2.0を使って認証を通す - 箱のプログラミング日記。

⇧ 上記サイト様を参考に、「http://localhost」を設定しときます。「保存」を押下。

(なんか、「Quickstart」のサンプルを試す場合、「リダイレクトURI」が決められてるらしいのかどうかは分からんのだけど、「http://localhost」だと動かなかった...後述で動いた「リダイレクトURI」記載してます)

f:id:ts0818:20210829161358j:plain

「OK」を押下。

f:id:ts0818:20210829160319j:plain

作成された「認証情報(Credential)」のファイルをローカル環境にダウンロードしておきます。

f:id:ts0818:20210829162247j:plain

f:id:ts0818:20210829162318p:plain


JavaでGradleプロジェクトを作成

ここからは、ローカル環境での話。

Eclipseを起動して、「Gradleプロジェクト」を作成で。「ファイル(F)」>「新規(N)」で「Gradle プロジェクト」が表示されない場合は、「その他(O)...」から探しましょう。

f:id:ts0818:20210829174358p:plain

「プロジェクト名」を入力して、「次へ(N)」を押下。 

f:id:ts0818:20210829174627p:plain

特に何も変更せず、「完了(F)」を押下。 

f:id:ts0818:20210829193210p:plain
 「Gradle プロジェクト」が作成されました。

f:id:ts0818:20210829193314p:plain

GCPGoogle Cloud Platform)」の管理画面の「APIとサービス」>「認証情報」のページからダウンロードしておいた「認証情報(Credential)」のファイルを、「src/main/resources」に配置します。

f:id:ts0818:20210829193447p:plain

f:id:ts0818:20210829180222p:plain

f:id:ts0818:20210829193532p:plain

「認証情報(Credential)」ファイルの名前を変更しときます。

f:id:ts0818:20210829194400p:plain

「credentials.json」にして「OK」を押下。

f:id:ts0818:20210829194508p:plain

続いて、「build.gradle」を編集。 

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'SheetsQuickstart.SheetsQuickstart'
sourceCompatibility = 1.8
targetCompatibility = 1.8
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.api-client:google-api-client:1.30.4'
    compile 'com.google.oauth-client:google-oauth-client-jetty:1.30.6'
    compile 'com.google.apis:google-api-services-sheets:v4-rev581-1.25.0'
	// Use JUnit test framework
	testImplementation 'junit:junit:4.12'

}

⇧ って感じで保存。Eclipseで「Gradle プロジェクト」を作成すると、「src/test/java」に「JUnit」を利用した単体テスト用のサンプルのクラスが作成されるので、「依存関係」として「JUnit」は残したままにしてます。

あと、「mainClassName」は、「パッケージ名」も含める必要があるので要注意ですかね。

そしたらば、 「build.gradle」で「mainClassName」に指定した名前で、Javaのクラスファイルを作成。

f:id:ts0818:20210829194651p:plain

「名前(M):」に、「build.gradle」で「mainClassName」に指定した名前を入力して、「完了(F)」で。

f:id:ts0818:20210829194055p:plain

f:id:ts0818:20210829195027p:plain

で、「SheetsQuickstart.java」の内容は、以下のような感じ。

package SheetsQuickstart;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.Collections;
import java.util.List;
import java.util.Arrays;

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.SheetsScopes;
import com.google.api.services.sheets.v4.model.ValueRange;

public class SheetsQuickstart {
    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";

    /**
     * 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);
    //private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS,SheetsScopes.DRIVE);
	private static final String CREDENTIALS_FILE_PATH = "/credentials.json";

    /**
     * Creates an authorized Credential object.
     * @param HTTP_TRANSPORT The network HTTP Transport.
     * @return An authorized Credential object.
     * @throws IOException If the credentials.json file cannot be found.
     */
    private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
        // Load client secrets.
        InputStream in = SheetsQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
        if (in == null) {
            throw new FileNotFoundException("Resource not found: " + 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(new java.io.File(TOKENS_DIRECTORY_PATH)))
                .setAccessType("offline")
                .build();
        LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();
        return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
    }

    /**
     * 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 = GoogleNetHttpTransport.newTrustedTransport();
        final String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
        final String range = "Class Data!A2:E";
        Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
        ValueRange response = service.spreadsheets().values()
                .get(spreadsheetId, range)
                .execute();
        List<List<Object>> values = response.getValues();
        if (values == null || values.isEmpty()) {
            System.out.println("No data found.");
        } else {
            System.out.println("Name, Major");
            for (List row : values) {
                // Print columns A and E, which correspond to indices 0 and 4.
                System.out.printf("%s, %s\n", row.get(0), row.get(4));
            }
        }
    }
}    

 

とりあえず、実行してみる。

f:id:ts0818:20210829195119p:plain

ファイアウォール」さん出てきたら、「アクセスを許可する(A)」を押下。

f:id:ts0818:20210829195203p:plain

で、はい、エラー。

f:id:ts0818:20210829195250p:plain

『「GCPGoogle Cloud Platform)」で「リダイレクト URI」を登録してくれ』ってことらしいけど、「リダイレクト URI」として「http://localhost」って登録したんだけどな...

なるほど、もしかしてだけど~、Eclipseから実行するのが駄目なんかね?

じゃあ、コマンドプロンプトで実行で。

f:id:ts0818:20210829232138p:plain

⇧ エラー出るやん...

stackoverflowで同様のエラー出てる方がおられましたな。

stackoverflow.com

If anybody else comes across this - the way I fixed this up (after following Google Sheets quickstart https://developers.google.com/sheets/api/quickstart/java - and losing half a day) - was to not use the latest version of Gradle.

Using version 6.3 works (using NetBeans and the Tools > options > Java > Gradle > Use standard gradle version.

https://stackoverflow.com/questions/67297564/google-api-import-cannot-be-resolved-in-java-eclipse-with-gradle-plugin

⇧ まさかの、最新のGradleを使ってくれるな、って仰っておられるんですが...

⇧ ドキュメントには、そんなこと一言も書いてないんだけど...

天下のGoogleさんが適当過ぎるってことなのか?

ちなみに、「GCPGoogle Cloud Platform)」側の「APIとサービス」>「認証情報」で「OAuth 2.0 client ID」を編集して、「リダイレクト URI」を

http://localhost:8888/Callback/

ってのに変更して、再度「認証情報(Credential)」ファイルをダウンロードして「credentials.json」にリネームして「src/main/resources」に配置したら、「エラー 400: redirect_uri_mismatch」は解消されました。

で、「Gradle 6.3」とかで実施してみるも、

f:id:ts0818:20210830233026j:plain

⇧ ブラウザで認証画面が開かれて、「Googleアカウント」を選択するも、今度は、「403 access_denied」とか別のエラーが出てきたんですよ...

Quickstartって一体...

解決法を探してたら、YouTubeの情報に辿り着く、時代はYouTubeか~ 


www.youtube.com

⇧ 神動画に救われました、感謝しかない、異国の地におられる麗しきお姉様たちにありがとう。

GCPGoogle Cloud Platform)」のサイドバーから「APIとサービス」>「OAUth 同意画面」 で、「公開ステータス」が「テスト」になってる場合は、「テストユーザー」を追加しないと駄目らしい。

f:id:ts0818:20210830225724p:plain

⇧「公開ステータス」が「テスト中」の場合、テストユーザーのみアプリにアクセスできるとかいう制約を付けてるのが謎過ぎるんだが...

とりあえず、普段「Gmail」とかで利用している「Googleアカウント」を追加しました。

f:id:ts0818:20210830225946j:plain

f:id:ts0818:20210830230148j:plain

で、改めて試してみたところ、無事実行されたようです。 

f:id:ts0818:20210830233213p:plain

f:id:ts0818:20210830233252p:plain

ちなみに、「Quickstart」で利用されてる「Google Sheets(Google Spreadsheets)」は、以下のようにGoogleの中の人が事前に用意してるものってことなんかな?

Java Quickstart」にあるサンプルのソースコードのコメントで、

    /**
     * Prints the names and majors of students in a sample spreadsheet:
     * https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
     */    

⇧ ってなっていて、リンクにアクセスすると、「Example Spreadsheet」が確認できます。

なので、既存の作成済みの「Google Sheets(Google Spreadsheets)」を利用してるパターンってことみたいね。

f:id:ts0818:20210831222443p:plain

ドキュメントによると、

developers.google.com

Spreadsheet

The primary object in Google Sheets that can contain multiple sheets, each with structured information contained in cells. Every spreadsheet is represented by a Spreadsheet resource and has a unique spreadsheetId value, containing letters, numbers, hyphens, or underscores. You can find the spreadsheet ID in a Google Sheets URL:

https://docs.google.com/spreadsheets/d/spreadsheetId/edit#gid=0

https://developers.google.com/sheets/api/guides/concepts

Sheet

A page or tab within a spreadsheet. Each sheet is represented by a Sheet resource and has a unique title and numeric sheetId value. You can find the sheet ID in a Google Sheets URL:

https://docs.google.com/spreadsheets/d/aBC-123_xYz/edit#gid=sheetId

https://developers.google.com/sheets/api/guides/concepts

⇧ 見た感じ、「SpreadSheet」が「Microsoft Excel」で言うところの「ブック」で、「Sheet」が「シート」みたいな感じなんかな?

まぁ、何が言いたいかというと、「Google Sheets(Google Spreadsheets)」を操作するには、「spreadsheetId」が必要になってくるってことなんですかね?

というわけで、「Quickstart」って言ってるのに、全然クイックスタートできるようなドキュメントになってなかったわけよ...

Googleさん、もうちょいドキュメント何とかならんかね...

今回はこのへんで。